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.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.2.0
File Size Uploaded
statable-3.2.0.tar.gz 341.7 kB Details

Built distribution (wheel)

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

Total release size: 645.6 kB

Release files / statable-3.2.0.tar.gz

Download URL statable-3.2.0.tar.gz
Size 341.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c7b191700d9172fb8acc2c11da3a768b57d05170684d2cd3d8a2b1b7aabaafc0
BLAKE2b-256 checksum
How to use checksums
4387b147656c92a4a0a5d5edbe49378bba34c431bab91ca1ac2272b8fbcd9c9d
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.0-py3-none-any.whl

Download URL statable-3.2.0-py3-none-any.whl
Size 303.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4020821efe2532506757a7c09728cae0c12d809cb29ad4212932e84df5154a71
BLAKE2b-256 checksum
How to use checksums
9b26fa80a2014e9b96516d58e1007661ea8934b8b99fc17199197d930042ff79
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

This release

3.2.0 This release

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