Skip to main content

StaTable

MISRA C:2012-aware state machine design and C code generation for embedded systems.

License Python Tests MISRA

StaTable is a Python-based tool for designing state machines and generating MISRA C:2012-compliant C code for embedded systems. It provides a CLI, a Python SDK, and a PySide6 GUI.


Features

  • MISRA C:2012-aware C code generation — validated with cppcheck + official MISRA addon
  • Multi-layer state machines — Driver / Middleware / Application with priority execution
  • State actions (Entry / Exit / Do) — table-driven dispatch with user-code markers
  • 35 validation rules across 11 categories with AI-assisted diagnostics
  • Marker-based user code preservation — regenerate without losing your custom code
  • CLI + SDK + GUI — integrate into any workflow
  • Pure Python — easy to install and extend
  • i18n: English and Simplified Chinese (简体中文)

Installation

SDK + CLI only:

pip install statable

With GUI (PySide6):

pip install "statable[gui]"

Development:

pip install "statable[dev]"

Quick Start

CLI

statable-cli version
statable-cli generate --xml design.xml --out generated/ --format json
statable-cli validate --xml design.xml --format json --exit-on-error

Python SDK

from statable import State, Event, Transition, StateMachine, StateType, EventKind
from statable.global_defs import GlobalDefinitions
from codegen import CCodeGenerator, CodeGenerationConfig

sm = StateMachine()
sm.add_state(State(name="Idle", type=StateType.INITIAL))
sm.add_state(State(name="Running"))
sm.add_event(Event(name="START", kind=EventKind.SIGNAL))
sm.set_initial("Idle")
sm.add_transition(Transition(source="Idle", event="START", target="Running"))

cfg = CodeGenerationConfig()
gen = CCodeGenerator(config=cfg)
files = gen.generate_all_layers([("Application", sm)], GlobalDefinitions())
gen.save_generated_code(files, "generated/")

GUI

python -m statable

Menu: Language / 语言 → switch between English and 简体中文.


Requirements

  • Python 3.10 or later
  • PySide6 >= 6.0 (for GUI)
  • pycparser (optional, for advanced parsing)


License

Apache License 2.0 — free for commercial and personal use.

See LICENSE for details.


Acknowledgments

  • PySide6 — Qt 6 for Python
  • cppcheck — static analysis
  • All contributors and users

If StaTable helps you, please consider giving it a ⭐ on GitHub.

Metadata

Release files for statable 3.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for statable 3.2.1
File Size Uploaded
statable-3.2.1.tar.gz 341.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for statable 3.2.1
File Interpreter ABI Platform
statable-3.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 645.9 kB

Release files / statable-3.2.1.tar.gz

Download URL statable-3.2.1.tar.gz
Size 341.9 kB
Tags Source
SHA-256 checksum
How to use checksums
38abed8131d8a305264ea7363854a30131cc38e8c495fed610a37cd7a96c40a5
BLAKE2b-256 checksum
How to use checksums
1814e58e0e471575f8af3b40bb2e9315dbf3e3db0e9cc7684c95a97ec972ce8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release files / statable-3.2.1-py3-none-any.whl

Download URL statable-3.2.1-py3-none-any.whl
Size 304.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db305b4d7b90c5ae39709f11382f28145394a1c7b8470105a4261e116eec9b63
BLAKE2b-256 checksum
How to use checksums
2343ab528438e5c7a4d193d4db48cef4453fd749c819bd1b5d5a8314fdf0d8ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release history Release notifications | RSS feed

3.2.2

2 release files

This release

3.2.1 This release

2 release files

3.2.0

2 release files

3.1.1

2 release files

3.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page