{"categories":[{"label":"Software Development","url":"https://skillfed.io/packages/category/software-development/2"}],"enrichment":{"capability":"Automat provides a Python library for building finite-state machines using type-safe, method-based interfaces rather than generic input/output objects, letting you organize stateful behavior while keeping a clean API.","skillfed_tags":["state-machine","type-safe","protocol-based"],"use_cases":["Implement protocol-based state machines for complex objects like network connections, protocol handlers, or device controllers that need strict state ordering.","Build workflow engines or task schedulers where transitions between states must be explicit and validated at definition time.","Create deterministic finite-state transducers that transform input sequences into output behaviors while maintaining clean, method-call-based APIs.","Model state-dependent behavior in game logic, UI state management, or embedded systems where invalid state combinations must be impossible.","Define type-safe state machines for async systems where each state transition can trigger side effects or return computed results."],"what_it_does":"Automat is a finite-state machine library that lets you define stateful behavior using Python method calls and type protocols, rather than requiring you to pass generic input objects through a state engine. Instead of scattering conditional logic across methods to track state flags, you declare states and transitions upfront, and the library synthesizes a clean interface that enforces valid state sequences at runtime.\n\nThe library targets the common pattern where your code needs to behave differently depending on its state (like a coffee machine that should only brew when it has water, beans, and a closed lid), but your callers should not need to know or care that you've implemented it as a state machine. It depends only on typing_extensions and supports Python 3.9 through 3.13, with full type hints throughout.","worth_installing":"Yes, if you need to model stateful behavior with strict state ordering and want a clean, type-safe API. The permissive MIT license and low install friction make it low-risk. However, the 485-day gap since the last release suggests the project is aging; verify that it meets your Python version requirements (3.9+) and that its approach fits your use case before committing to it as a core dependency."},"id":"automat","links":{"html":"https://skillfed.io/packages/automat","md":"https://skillfed.io/packages/automat.md","pypi":"https://pypi.org/project/automat/"},"maintenance":{"status":"aging"},"meta":{"latest_release":"2025-04-16","license_spdx":null,"license_treatment":"permissive","name":"Automat","python_support":"supports_current","summary":"Self-service finite-state machines for the programmer on the go."},"popularity":{"monthly_downloads":14296962,"position":1239,"tier":"top_5000"},"security":{"n_vulnerabilities":0},"version":"25.4.16"}
