python-statemachine 3.1.2__tar.gz → 3.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/.github/workflows/python-package.yml +1 -1
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/.gitignore +5 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/.pre-commit-config.yaml +1 -1
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/AGENTS.md +28 -2
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/PKG-INFO +16 -3
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/README.md +7 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/api.md +13 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/behaviour.md +9 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/contributing.md +29 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/index.md +11 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/installation.md +11 -4
- python_statemachine-3.2.0/docs/io/formats.md +479 -0
- python_statemachine-3.2.0/docs/io/index.md +129 -0
- python_statemachine-3.2.0/docs/io/json_schema.md +56 -0
- python_statemachine-3.2.0/docs/io/security.md +82 -0
- python_statemachine-3.2.0/docs/releases/3.2.0.md +206 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/index.md +2 -1
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/validations.md +7 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/pyproject.toml +27 -28
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/__init__.py +1 -1
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/callbacks.py +5 -11
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/configuration.py +5 -6
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/extract.py +23 -24
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/formatter.py +5 -7
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/model.py +9 -11
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/renderers/dot.py +20 -26
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/renderers/mermaid.py +36 -40
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/renderers/table.py +7 -9
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/weighted.py +7 -11
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/dispatcher.py +13 -12
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/engines/async_.py +5 -6
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/engines/base.py +12 -14
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/event.py +1 -2
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/exceptions.py +1 -1
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/factory.py +11 -15
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/graph.py +2 -2
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/invoke.py +12 -11
- python_statemachine-3.2.0/statemachine/io/__init__.py +45 -0
- {python_statemachine-3.1.2/statemachine/io/scxml → python_statemachine-3.2.0/statemachine/io}/actions.py +158 -288
- python_statemachine-3.2.0/statemachine/io/builder.py +195 -0
- python_statemachine-3.1.2/statemachine/io/__init__.py → python_statemachine-3.2.0/statemachine/io/class_factory.py +32 -21
- python_statemachine-3.2.0/statemachine/io/evaluators.py +275 -0
- python_statemachine-3.2.0/statemachine/io/interpreter.py +128 -0
- {python_statemachine-3.1.2/statemachine/io/scxml → python_statemachine-3.2.0/statemachine/io}/invoke.py +77 -49
- python_statemachine-3.2.0/statemachine/io/json/__init__.py +1 -0
- python_statemachine-3.2.0/statemachine/io/json/reader.py +27 -0
- python_statemachine-3.2.0/statemachine/io/loader.py +161 -0
- python_statemachine-3.2.0/statemachine/io/model.py +268 -0
- python_statemachine-3.2.0/statemachine/io/native.py +402 -0
- python_statemachine-3.2.0/statemachine/io/ports.py +83 -0
- python_statemachine-3.2.0/statemachine/io/schemas/statechart.schema.json +258 -0
- python_statemachine-3.2.0/statemachine/io/scxml/__init__.py +12 -0
- python_statemachine-3.2.0/statemachine/io/scxml/processor.py +33 -0
- python_statemachine-3.1.2/statemachine/io/scxml/parser.py → python_statemachine-3.2.0/statemachine/io/scxml/reader.py +64 -47
- python_statemachine-3.2.0/statemachine/io/system_variables.py +184 -0
- python_statemachine-3.2.0/statemachine/io/validation.py +44 -0
- python_statemachine-3.2.0/statemachine/io/yaml/__init__.py +1 -0
- python_statemachine-3.2.0/statemachine/io/yaml/reader.py +65 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/locale/en/LC_MESSAGES/statemachine.po +19 -19
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/locale/hi_IN/LC_MESSAGES/statemachine.po +19 -19
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/locale/pt_BR/LC_MESSAGES/statemachine.po +19 -19
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/locale/zh_CN/LC_MESSAGES/statemachine.po +19 -19
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/orderedset.py +3 -3
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/registry.py +1 -4
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/signature.py +2 -5
- python_statemachine-3.2.0/statemachine/spec_parser.py +374 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/state.py +5 -6
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/statemachine.py +18 -20
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/states.py +3 -5
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/transition.py +3 -4
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/transition_list.py +4 -5
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/transition_mixin.py +1 -1
- python_statemachine-3.2.0/tests/io/format_parity/guarded_counter.json +37 -0
- python_statemachine-3.2.0/tests/io/format_parity/guarded_counter.scxml +16 -0
- python_statemachine-3.2.0/tests/io/format_parity/guarded_counter.yaml +16 -0
- python_statemachine-3.2.0/tests/io/format_parity/invoke_child.json +37 -0
- python_statemachine-3.2.0/tests/io/format_parity/invoke_child.scxml +18 -0
- python_statemachine-3.2.0/tests/io/format_parity/invoke_child.yaml +17 -0
- python_statemachine-3.2.0/tests/io/format_parity/native/order_pipeline.json +92 -0
- python_statemachine-3.2.0/tests/io/format_parity/native/order_pipeline.yaml +47 -0
- python_statemachine-3.2.0/tests/io/format_parity/native/telemetry.json +122 -0
- python_statemachine-3.2.0/tests/io/format_parity/native/telemetry.yaml +50 -0
- python_statemachine-3.2.0/tests/io/format_parity/system_event.json +30 -0
- python_statemachine-3.2.0/tests/io/format_parity/system_event.scxml +13 -0
- python_statemachine-3.2.0/tests/io/format_parity/system_event.yaml +14 -0
- python_statemachine-3.2.0/tests/io/format_parity/w3c_test147_if.json +76 -0
- python_statemachine-3.2.0/tests/io/format_parity/w3c_test147_if.scxml +26 -0
- python_statemachine-3.2.0/tests/io/format_parity/w3c_test147_if.yaml +29 -0
- python_statemachine-3.2.0/tests/io/format_parity/w3c_test155_foreach.json +49 -0
- python_statemachine-3.2.0/tests/io/format_parity/w3c_test155_foreach.scxml +20 -0
- python_statemachine-3.2.0/tests/io/format_parity/w3c_test155_foreach.yaml +22 -0
- python_statemachine-3.2.0/tests/io/test_format_parity.py +59 -0
- python_statemachine-3.2.0/tests/io/test_guards_parity.py +145 -0
- python_statemachine-3.2.0/tests/io/test_interpreter.py +258 -0
- python_statemachine-3.2.0/tests/io/test_loader.py +147 -0
- python_statemachine-3.2.0/tests/io/test_model.py +38 -0
- python_statemachine-3.2.0/tests/io/test_native.py +336 -0
- python_statemachine-3.2.0/tests/io/test_native_behavior.py +64 -0
- python_statemachine-3.2.0/tests/io/test_native_invoke.py +126 -0
- python_statemachine-3.2.0/tests/io/test_ports.py +70 -0
- python_statemachine-3.2.0/tests/io/test_readers.py +58 -0
- python_statemachine-3.2.0/tests/io/test_security.py +230 -0
- python_statemachine-3.2.0/tests/io/test_validation.py +192 -0
- python_statemachine-3.2.0/tests/scxml/_harness.py +58 -0
- python_statemachine-3.2.0/tests/scxml/test_scxml_cases.py +53 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_configuration.py +92 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_copy.py +3 -2
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_invoke.py +59 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_io.py +33 -1
- python_statemachine-3.2.0/tests/test_scxml_datamodel.py +165 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_scxml_units.py +101 -72
- python_statemachine-3.2.0/tests/test_spec_parser_values.py +141 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/uv.lock +512 -1132
- python_statemachine-3.1.2/statemachine/io/scxml/processor.py +0 -263
- python_statemachine-3.1.2/statemachine/io/scxml/schema.py +0 -175
- python_statemachine-3.1.2/statemachine/spec_parser.py +0 -245
- python_statemachine-3.1.2/tests/scxml/test_scxml_cases.py +0 -101
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/.git-blame-ignore-revs +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/.github/FUNDING.yml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/.github/ISSUE_TEMPLATE.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/.github/workflows/release.yml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/.readthedocs.yaml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/CLAUDE.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/LICENSE +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/conftest.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/contributing.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/_static/custom_machine.css +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/actions.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/async.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/authors.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/concepts.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/conf.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/diagram.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/error_handling.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/events.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/guards.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/how-to/coming_from_state_pattern.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/how-to/coming_from_transitions.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/images/_oc_machine_processing.svg +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/images/internal_transition_sc.png +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/images/lab_approval_machine_accepted.png +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/images/oc_machine_processing.svg +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/images/python-statemachine.png +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/images/readme_trafficlightmachine.png +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/images/test_state_machine_internal.png +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/images/traffic_light_machine.png +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/integrations.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/invoke.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/listeners.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/models.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/processing_model.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.1.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.2.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.3.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.4.2.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.5.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.5.1.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.6.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.6.1.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.6.2.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.7.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.7.1.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.8.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/0.9.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/1.0.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/1.0.1.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/1.0.2.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/1.0.3.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.0.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.1.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.1.1.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.1.2.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.2.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.3.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.3.1.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.3.2.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.3.3.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.3.4.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.3.5.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.3.6.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.4.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.5.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/2.6.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/3.0.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/3.1.0.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/3.1.1.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/3.1.2.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/releases/upgrade_2x_to_3.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/statechart.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/states.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/timeout.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/transitions.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/tutorial.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/docs/weighted_transitions.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/__main__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/renderers/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/diagram/sphinx_ext.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/contrib/timeout.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/engines/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/engines/sync.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/event_data.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/events.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/i18n.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/mixins.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/model.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/py.typed +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/statemachine/utils.py +0 -0
- {python_statemachine-3.1.2/statemachine/io/scxml → python_statemachine-3.2.0/tests}/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/conftest.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/django_project/app.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/django_project/core/__init__,.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/django_project/core/settings.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/django_project/core/wsgi.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/django_project/manage.py +0 -0
- {python_statemachine-3.1.2/tests → python_statemachine-3.2.0/tests/django_project/workflow}/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/django_project/workflow/apps.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/django_project/workflow/models.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/django_project/workflow/statemachines.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/django_project/workflow/tests.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/README.rst +0 -0
- {python_statemachine-3.1.2/tests/django_project/workflow → python_statemachine-3.2.0/tests/examples}/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/ai_shell_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/air_conditioner_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/all_actions_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/async_guess_the_number_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/async_without_loop_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/enum_campaign_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/guess_the_number_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/lor_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/order_control_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/order_control_rich_model_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/persistent_model_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/recursive_event_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/reusing_transitions_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/sqlite_persistent_model_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/statechart_cleanup_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/statechart_compound_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/statechart_delayed_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/statechart_error_handling_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/statechart_eventless_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/statechart_history_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/statechart_in_condition_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/statechart_parallel_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/traffic_light_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/user_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/examples/weighted_idle_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/helpers.py +0 -0
- {python_statemachine-3.1.2/tests/examples → python_statemachine-3.2.0/tests/io}/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/compound/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/compound/middle_earth_journey.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/compound/middle_earth_journey_two_compounds.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/compound/middle_earth_journey_with_finals.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/compound/moria_expedition.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/compound/moria_expedition_with_escape.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/compound/quest_for_erebor.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/compound/shire_to_rivendell.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/donedata/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/donedata/destroy_the_ring.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/donedata/destroy_the_ring_simple.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/donedata/nested_quest_donedata.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/donedata/quest_for_erebor_done_convention.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/donedata/quest_for_erebor_explicit_id.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/donedata/quest_for_erebor_multi_word.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/donedata/quest_for_erebor_with_event.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/error_convention_event.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/error_convention_transition_list.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/error_in_action_sc.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/error_in_action_sm_with_flag.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/error_in_after_sc.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/error_in_error_handler_sc.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/error_in_guard_sc.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/error_in_guard_sm.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/error/error_in_on_enter_sc.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/eventless/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/eventless/auto_advance.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/eventless/beacon_chain.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/eventless/beacon_chain_lighting.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/eventless/coordinated_advance.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/eventless/ring_corruption.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/eventless/ring_corruption_with_bear_ring.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/eventless/ring_corruption_with_tick.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/history/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/history/deep_memory_of_moria.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/history/gollum_personality.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/history/gollum_personality_default_gollum.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/history/gollum_personality_with_default.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/history/shallow_moria.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/in_condition/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/in_condition/combined_guard.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/in_condition/descendant_check.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/in_condition/eventless_in.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/in_condition/fellowship.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/in_condition/fellowship_coordination.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/in_condition/gate_of_moria.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/parallel/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/parallel/session.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/parallel/session_with_done_state.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/parallel/two_towers.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/parallel/war_of_the_ring.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/parallel/war_with_exit.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_actions.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_compound.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_deep_history.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_guards.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_history.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_internal.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_parallel.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_parallel_compound.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_self_transition.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/showcase_simple.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/transition_from_any.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/tutorial_coffee_order.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/validators/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/validators/multi_validator.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/validators/order_validation.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/validators/order_validation_no_error_events.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/validators/validator_fallthrough.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/validators/validator_with_cond.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/validators/validator_with_error_transition.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/workflow/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/workflow/campaign_machine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/workflow/campaign_machine_with_validator.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/workflow/campaign_machine_with_values.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/machines/workflow/reverse_traffic_light.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/models.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scrape_images.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/conftest.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/test_microwave.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/LICENSE +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test144.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test145.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test147.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test148.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test149.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test150.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test151.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test152.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test153.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test155.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test156.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test158.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test159.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test172.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test173.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test174.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test175.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test176.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test179.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test183.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test185.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test186.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test187.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test189.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test190.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test191.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test192.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test194.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test198.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test199.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test200.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test205.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test207.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test208.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test210.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test215.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test216.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test216sub1.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test220.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test223.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test224.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test225.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test226.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test226sub1.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test228.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test229.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test232.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test233.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test234.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test235.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test236.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test237.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test239.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test239sub1.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test240.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test241.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test242.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test242sub1.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test243.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test244.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test245.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test247.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test252.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test253.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test276.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test276sub1.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test277.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test279.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test280.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test286.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test287.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test294.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test298.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test302.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test303.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test304.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test309.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test310.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test311.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test312.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test318.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test319.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test321.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test322.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test323.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test324.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test325.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test326.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test329.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test330.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test331.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test332.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test333.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test335.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test336.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test337.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test338.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test339.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test342.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test343.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test344.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test346.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test347.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test348.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test349.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test350.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test351.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test352.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test354.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test355.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test364.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test372.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test375.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test376.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test377.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test378.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test387.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test388.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test396.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test399.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test401.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test402.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test403a.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test403b.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test403c.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test404.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test405.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test406.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test407.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test409.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test411.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test412.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test413.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test416.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test417.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test419.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test421.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test422.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test423.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test487.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test488.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test495.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test496.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test500.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test501.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test503.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test504.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test505.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test506.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test521.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test525.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test527.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test528.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test529.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test530.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test533.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test550.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test551.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test552.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test552.txt +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test553.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test554.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test570.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test576.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test579.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/mandatory/test580.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test193.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test201.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test278.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test444.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test445.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test446.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test446.txt +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test448.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test449.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test451.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test452.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test453.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test456.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test457.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test459.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test460.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test509.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test510.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test518.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test519.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test520.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test522.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test531.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test532.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test534.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test557.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test557.txt +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test558.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test558.txt +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test560.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test561.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test562.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test567.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test569.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test577.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/scxml/w3c/optional/test578.scxml +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_actions.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_api_contract.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_async.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_async_futures.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_callbacks.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_callbacks_isolation.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_class_listeners.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_conditions_algebra.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_contrib_diagram.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_contrib_timeout.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_dispatcher.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_error_execution.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_events.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_examples.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_fellowship_quest.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_listener.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_mermaid_renderer.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_mixins.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_mock_compatibility.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_multiple_destinations.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_optional_pydot.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_profiling.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_registry.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_rtc.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_signature.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_signature_positional_only.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_spec_parser.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_state.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_state_callbacks.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statechart_compound.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statechart_delayed.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statechart_donedata.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statechart_error.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statechart_eventless.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statechart_history.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statechart_in_condition.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statechart_parallel.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statemachine.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statemachine_bounded_transitions.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statemachine_compat.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_statemachine_inheritance.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_threading.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_transition_list.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_transition_table.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_transitions.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_validators.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/test_weighted_transitions.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/testcases/__init__.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/testcases/issue308.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/testcases/issue384_multiple_observers.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/testcases/issue449.md +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/testcases/test_issue434.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/testcases/test_issue480.py +0 -0
- {python_statemachine-3.1.2 → python_statemachine-3.2.0}/tests/testcases/test_issue509.py +0 -0
|
@@ -218,11 +218,19 @@ uv run mypy statemachine/ tests/
|
|
|
218
218
|
|
|
219
219
|
## Code style
|
|
220
220
|
|
|
221
|
-
- **Formatter/Linter:** ruff (line length 99, target Python 3.
|
|
221
|
+
- **Formatter/Linter:** ruff (line length 99, target Python 3.10)
|
|
222
222
|
- **Rules:** pycodestyle, pyflakes, isort, pyupgrade, flake8-comprehensions, flake8-bugbear, flake8-pytest-style
|
|
223
223
|
- **Imports:** single-line, sorted by isort. **Always prefer top-level imports** — only use
|
|
224
224
|
lazy (in-function) imports when strictly necessary to break circular dependencies
|
|
225
|
-
- **Docstrings:** Google convention
|
|
225
|
+
- **Docstrings:** Google convention. Document only what isn't obvious from the
|
|
226
|
+
name/type (hidden conventions, non-obvious semantics), not trivial fields.
|
|
227
|
+
- **Attribute docs:** use an attribute *docstring* (a string literal on the line
|
|
228
|
+
**below** the attribute), not an inline `#` comment, so Sphinx autodoc captures it.
|
|
229
|
+
Reserve `#` for explaining logic. Example:
|
|
230
|
+
```python
|
|
231
|
+
unless: "str | None" = None
|
|
232
|
+
"""Negated guard expression; the transition is allowed only if it is falsy."""
|
|
233
|
+
```
|
|
226
234
|
- **Naming:** PascalCase for classes, snake_case for functions/methods, UPPER_SNAKE_CASE for constants
|
|
227
235
|
- **Type hints:** used throughout; `TYPE_CHECKING` for circular imports
|
|
228
236
|
- Pre-commit hooks enforce ruff + mypy + pytest
|
|
@@ -268,6 +276,24 @@ All code examples in `docs/*.md` **must** be testable doctests (using ```` ```py
|
|
|
268
276
|
`--doctest-glob=*.md`. If an example cannot be expressed as a doctest (e.g., it requires
|
|
269
277
|
real concurrency), write it as a unit test in `tests/` and reference it from the docs instead.
|
|
270
278
|
|
|
279
|
+
### Declarative IO: keep the JSON Schema and the parser in sync
|
|
280
|
+
|
|
281
|
+
The native JSON/YAML format has three artifacts that must agree: the parser
|
|
282
|
+
(`statemachine/io/native.py`), the runtime, and the published JSON Schema
|
|
283
|
+
(`statemachine/io/schemas/statechart.schema.json`). They drift apart silently unless
|
|
284
|
+
enforced, so when you add or change native vocabulary:
|
|
285
|
+
|
|
286
|
+
- Update the **schema** alongside the parser/runtime change, never after.
|
|
287
|
+
- The parser is the source of truth for accepted keys: `_ACTION_KEYS` and the
|
|
288
|
+
`_DOCUMENT_KEYS`/`_STATE_KEYS`/`_TRANSITION_KEYS`/`_INVOKE_KEYS` frozensets. The parser
|
|
289
|
+
**rejects unknown keys** using them, and `tests/io/test_validation.py` asserts each set
|
|
290
|
+
equals the matching schema node's properties, so a change on one side without the other
|
|
291
|
+
fails CI.
|
|
292
|
+
- **Every native example is schema-validated.** Test fixtures load with `validate=True` (and
|
|
293
|
+
a corpus test validates every `.yaml`/`.json` under `tests/io/`); docs examples pass
|
|
294
|
+
`validate=True` too. A feature exercised by an example but missing from the schema breaks a
|
|
295
|
+
test.
|
|
296
|
+
|
|
271
297
|
## Git workflow
|
|
272
298
|
|
|
273
299
|
- Main branch: `develop`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-statemachine
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Python Finite State Machines made easy.
|
|
5
5
|
Project-URL: homepage, https://github.com/fgmacedo/python-statemachine
|
|
6
6
|
Author-email: Fernando Macedo <fgmacedo@gmail.com>
|
|
@@ -13,7 +13,6 @@ Classifier: Framework :: Django
|
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: License :: OSI Approved :: MIT License
|
|
15
15
|
Classifier: Natural Language :: English
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -21,9 +20,16 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.14
|
|
22
21
|
Classifier: Topic :: Home Automation
|
|
23
22
|
Classifier: Topic :: Software Development :: Libraries
|
|
24
|
-
Requires-Python: >=3.
|
|
23
|
+
Requires-Python: >=3.10
|
|
25
24
|
Provides-Extra: diagrams
|
|
26
25
|
Requires-Dist: pydot>=4.0.1; extra == 'diagrams'
|
|
26
|
+
Provides-Extra: io
|
|
27
|
+
Requires-Dist: jsonschema>=4.18; extra == 'io'
|
|
28
|
+
Requires-Dist: pyyaml>=6.0; extra == 'io'
|
|
29
|
+
Provides-Extra: validation
|
|
30
|
+
Requires-Dist: jsonschema>=4.18; extra == 'validation'
|
|
31
|
+
Provides-Extra: yaml
|
|
32
|
+
Requires-Dist: pyyaml>=6.0; extra == 'yaml'
|
|
27
33
|
Description-Content-Type: text/markdown
|
|
28
34
|
|
|
29
35
|
# Python StateMachine
|
|
@@ -400,6 +406,13 @@ To generate diagrams, install with the `diagrams` extra (requires
|
|
|
400
406
|
pip install python-statemachine[diagrams]
|
|
401
407
|
```
|
|
402
408
|
|
|
409
|
+
To load statecharts from declarative documents, install the IO extras
|
|
410
|
+
(`yaml` for YAML, `validation` for `validate=True`, or `io` for both):
|
|
411
|
+
|
|
412
|
+
```
|
|
413
|
+
pip install python-statemachine[io]
|
|
414
|
+
```
|
|
415
|
+
|
|
403
416
|
|
|
404
417
|
## Contributing
|
|
405
418
|
|
|
@@ -372,6 +372,13 @@ To generate diagrams, install with the `diagrams` extra (requires
|
|
|
372
372
|
pip install python-statemachine[diagrams]
|
|
373
373
|
```
|
|
374
374
|
|
|
375
|
+
To load statecharts from declarative documents, install the IO extras
|
|
376
|
+
(`yaml` for YAML, `validation` for `validate=True`, or `io` for both):
|
|
377
|
+
|
|
378
|
+
```
|
|
379
|
+
pip install python-statemachine[io]
|
|
380
|
+
```
|
|
381
|
+
|
|
375
382
|
|
|
376
383
|
## Contributing
|
|
377
384
|
|
|
@@ -147,6 +147,19 @@ class MyMachine(StateChart):
|
|
|
147
147
|
.. autofunction:: statemachine.io.create_machine_class_from_definition
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
+
## io.load
|
|
151
|
+
|
|
152
|
+
```{versionadded} 3.2.0
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
See [](io/index.md) for the guide.
|
|
156
|
+
|
|
157
|
+
```{eval-rst}
|
|
158
|
+
.. autofunction:: statemachine.io.load
|
|
159
|
+
|
|
160
|
+
.. autofunction:: statemachine.io.build_processor
|
|
161
|
+
```
|
|
162
|
+
|
|
150
163
|
## timeout
|
|
151
164
|
|
|
152
165
|
```{versionadded} 3.0.0
|
|
@@ -25,6 +25,15 @@ Existing projects should consider migrating when possible, as the
|
|
|
25
25
|
SCXML-compliant behavior provides more predictable semantics.
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
```{warning}
|
|
29
|
+
This page describes runtime *semantics*. If you **load SCXML documents** via
|
|
30
|
+
`SCXMLProcessor`, note that SCXML is executable content: by default the
|
|
31
|
+
datamodel is evaluated with a restricted AST whitelist and `<script>` is
|
|
32
|
+
rejected, so untrusted documents cannot execute arbitrary code. Pass
|
|
33
|
+
`trusted=True` only for SCXML you control. See the 3.2.0 release notes and
|
|
34
|
+
GHSA-v4jc-pm6r-3vj8.
|
|
35
|
+
```
|
|
36
|
+
|
|
28
37
|
|
|
29
38
|
## Comparison table
|
|
30
39
|
|
|
@@ -289,3 +289,32 @@ which will:
|
|
|
289
289
|
|
|
290
290
|
Monitor the workflow run at `https://github.com/fgmacedo/python-statemachine/actions` to
|
|
291
291
|
confirm the release was published successfully.
|
|
292
|
+
|
|
293
|
+
#### 10. Publish the GitHub release
|
|
294
|
+
|
|
295
|
+
Create the GitHub release from the freshly pushed tag using the release notes file as the
|
|
296
|
+
body. Two adjustments are needed when going from MyST/Sphinx markdown to GitHub-flavored
|
|
297
|
+
markdown:
|
|
298
|
+
|
|
299
|
+
- Convert MyST directives (`` ```{note} ``, `` ```{warning} ``, etc.) to GitHub's
|
|
300
|
+
[alert syntax](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts)
|
|
301
|
+
(`> [!NOTE]`, `> [!WARNING]`) or to plain blockquotes.
|
|
302
|
+
- Rewrite intra-docs links. Relative links like `[3.1.0 release notes](3.1.0.md)` resolve
|
|
303
|
+
on ReadTheDocs but not on github.com. Replace them with absolute URLs against the
|
|
304
|
+
matching tag, e.g.
|
|
305
|
+
`https://github.com/fgmacedo/python-statemachine/blob/vX.Y.Z/docs/releases/X.Y.Z.md`.
|
|
306
|
+
Avoid linking to `https://python-statemachine.readthedocs.io/en/vX.Y.Z/` immediately
|
|
307
|
+
after publishing because the ReadTheDocs build for the new tag may still be in progress.
|
|
308
|
+
|
|
309
|
+
Then create the release. Use the converted notes as the body:
|
|
310
|
+
|
|
311
|
+
```shell
|
|
312
|
+
gh release create vX.Y.Z \
|
|
313
|
+
--title "vX.Y.Z" \
|
|
314
|
+
--notes-file /tmp/release-X.Y.Z-notes.md \
|
|
315
|
+
--target main \
|
|
316
|
+
--verify-tag
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Confirm the rendered release at
|
|
320
|
+
`https://github.com/fgmacedo/python-statemachine/releases/tag/vX.Y.Z`.
|
|
@@ -21,14 +21,21 @@ Alternatively, if you prefer using [pip](https://pip.pypa.io):
|
|
|
21
21
|
python3 -m pip install python-statemachine
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
## Optional extras
|
|
25
|
+
|
|
26
|
+
Some features require extra dependencies, available as pip extras:
|
|
27
27
|
|
|
28
28
|
```shell
|
|
29
|
-
python3 -m pip install "python-statemachine[diagrams]"
|
|
29
|
+
python3 -m pip install "python-statemachine[diagrams]" # pydot, to generate diagrams from your machines
|
|
30
|
+
python3 -m pip install "python-statemachine[yaml]" # PyYAML, to load YAML statechart documents
|
|
31
|
+
python3 -m pip install "python-statemachine[validation]" # jsonschema, to validate documents (validate=True)
|
|
32
|
+
python3 -m pip install "python-statemachine[io]" # PyYAML + jsonschema, the full JSON/YAML IO stack
|
|
30
33
|
```
|
|
31
34
|
|
|
35
|
+
Diagram generation also requires the [Graphviz](https://graphviz.org/) system package (see
|
|
36
|
+
[](diagram.md)). The `[yaml]`, `[validation]` and `[io]` extras back the declarative loaders
|
|
37
|
+
documented in [](io/index.md); loading JSON needs no extra, as it uses only the standard library.
|
|
38
|
+
|
|
32
39
|
|
|
33
40
|
|
|
34
41
|
## From sources
|