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

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.1.0
File Size Uploaded
statable-3.1.0.tar.gz 333.9 kB Details

Built distribution (wheel)

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

Total release size: 630.8 kB

Release files / statable-3.1.0.tar.gz

Download URL statable-3.1.0.tar.gz
Size 333.9 kB
Tags Source
SHA-256 checksum
How to use checksums
20a19b4f847782b11aef97192c8930f8535caef823d9adbad25d74081253a552
BLAKE2b-256 checksum
How to use checksums
a4d3394b1d7dab7af18fce566b88cba61fa66eb4a7b328680865ca8334ca21dc
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.1.0-py3-none-any.whl

Download URL statable-3.1.0-py3-none-any.whl
Size 296.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cc0a16b93398235a5ff806207bfb82f006f0b7f6815c9bd0f1509a6dd2bf8197
BLAKE2b-256 checksum
How to use checksums
ff23eeb367fe30fc5c49da2de715c8e7fb289e7b89ae0fff8dc45ea922acf1c1
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

3.2.1

2 release files

3.2.0

2 release files

3.1.1

2 release files

This release

3.1.0 This release

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