Skip to main content
https://travis-ci.org/pgularski/pysm.svg?branch=master https://coveralls.io/repos/github/pgularski/pysm/badge.svg?branch=master Code Health Documentation Status

Python State Machine

The State Pattern solves many problems, untangles the code and saves one’s sanity. Yet.., it’s a bit rigid and doesn’t scale. The goal of this library is to give you a close to the State Pattern simplicity with much more flexibility. And, if needed, the full state machine functionality, including FSM, HSM, PDA and other tasty things.

Goals

  • Provide a State Pattern-like behavior with more flexibility

  • Be explicit and don’t add any code to objects

  • Handle directly any kind of event (not only strings) - parsing strings is cool again!

  • Keep it simple, even for someone who’s not very familiar with the FSM terminology

Features

  • Finite State Machine (FSM)

  • Hierarchical State Machine (HSM) with Internal/External/Local transitions

  • Pushdown Automaton (PDA)

  • Transition callbacks - action, before, after

  • State hooks - enter, exit, and other event handlers

  • Entry and exit actions are associated with states, not transitions

  • Events may be anything as long as they’re hashable

  • States history and transition to previous states

  • Conditional transitions (if/elif/else-like logic)

  • Explicit behaviour (no method or attribute is added to the object containing a state machine)

  • No need to extend a class with State Machine class (composition over inheritance)

  • Fast (even with hundreds of transition rules)

  • Not too many pythonisms, so that it’s easily portable to other languages (ie. JavaScript).

Installation

Install pysm from PyPI:

pip install pysm

or clone the Github pysm repository:

git clone https://github.com/pgularski/pysm
cd pysm
python setup.py install

Documentation

Read the docs - http://pysm.readthedocs.io/

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysm-0.3.2.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysm-0.3.2-py2.py3-none-any.whl (12.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pysm-0.3.2.tar.gz.

File metadata

  • Download URL: pysm-0.3.2.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pysm-0.3.2.tar.gz
Algorithm Hash digest
SHA256 345de2981a3e8e9746e1dfd391c443929fcad51bc2b475131ff36787bec3c99b
MD5 b7649e620f20d9ce199b4fcf9641839f
BLAKE2b-256 166fc010c8d9e6b8158e3496b3a35b095098f19d19a6f4af222dd55b3dc1d9c4

See more details on using hashes here.

File details

Details for the file pysm-0.3.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pysm-0.3.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 21bab83ee26e222ed9b91ca6f62641c275b9d9357efce5adfcf5ffd494ac1851
MD5 7e4d7cfc2aa7e7522d49ff4f04a5a70e
BLAKE2b-256 52e5c64a8293b0f5d5a3d716801c7185ab37526d8220755d4e648df1dbe300d7

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.1

2 files

0.4.0

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

1 file

This release

0.3.2 This release

2 files

0.3.1

2 files

0.3.0

2 files

0.2.4

2 files

0.2.3

1 file

0.2.2

1 file

0.2.1

1 file

0.2.0

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page