GithubHelp home page GithubHelp logo

mortise's Introduction

Mortise - A python state machine framework

Mortise is a synchronous state machine library for event based systems.

Features

  • Synchronous state-machine event handling
  • No external dependencies
  • Composable / Reusable state support via pushdown automata
  • State timeout and retry limit support
  • Directed exception handling + state transitions on exception
  • State machine visualization (requires graphviz)

Requirements

  • Python >= 3.4
  • GraphViz (Optional for state machine visualization)

Examples

See the examples folder.

Authors

Mortise was developed at Keyme by Jeff Ciesielski and Lianne Lairmore

mortise's People

Contributors

jeff-ciesielski avatar ssankaran17 avatar

Stargazers

Nyimbi Odero avatar Benjamin Jiang avatar Lianne avatar

Watchers

James Cloos avatar C Burgos avatar JustinW avatar Jim Krayer avatar Alan Davidson avatar Lianne avatar  avatar Ricky avatar Hari avatar DivyaKundra avatar James Ethridge avatar  avatar  avatar Shirley Wang avatar  avatar Jennifer Paulino avatar Ye Peng avatar  avatar Bo Stevens avatar

mortise's Issues

Timeouts, retries don't work when a state returns True

Found this morning, I'd changed a state to return True rather than None, and all of a sudden timeouts in that state didn't work. I changed it back, and they do. @knitHacker looked into it just now and says that when we return True we run the on_leave method, which will reset both the timers and the retries. That seems unexpected to me.

@Jeff-Ciesielski

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.