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.2

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.2
File Size Uploaded
statable-3.2.2.tar.gz 342.9 kB Details

Built distribution (wheel)

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

Total release size: 646.9 kB

Release files / statable-3.2.2.tar.gz

Download URL statable-3.2.2.tar.gz
Size 342.9 kB
Tags Source
SHA-256 checksum
How to use checksums
07dac7ff8ffafb521d73ff97c4925f6bf6b23606b04727608ebc34b51373a346
BLAKE2b-256 checksum
How to use checksums
57916c2c5cb8a260359312a5b6428ba198176301dfaa34150a13407082b0a675
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.2-py3-none-any.whl

Download URL statable-3.2.2-py3-none-any.whl
Size 304.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
77edf4546cb6133300e6e7409f3d3a2eb15955ce9a431877d11425c7ede3b463
BLAKE2b-256 checksum
How to use checksums
f0d7c4f362a5e304148f923c6de79172e7baa13dec614398941f8573b06c84ba
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

This release

3.2.2 This release

2 release files

3.2.1

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