{"categories":[{"label":"Python Modules","url":"https://skillfed.io/packages/category/software-development-libraries-python-modules/10"}],"enrichment":{"capability":"Provides finite state machine support for Django models, allowing you to define states and controlled transitions between them using decorators and enums.","skillfed_tags":["state-machine","workflow","django-extension"],"use_cases":["Define multi-step approval workflows (e.g., draft \u2192 review \u2192 approved \u2192 published) with controlled transitions.","Implement order or payment state machines with validation rules and restricted state changes.","Build task or ticket lifecycle management where state changes are restricted by business logic.","Create document workflows with states like new, in-review, rejected, and finalized.","Enforce state-based permissions so only certain transitions are allowed from each state."],"what_it_does":"django-fsm is a finite state machine library for Django that lets you declare states and transitions declaratively using Python enums and decorators. Instead of allowing arbitrary state changes, it enforces a controlled workflow where transitions between states are explicitly defined and validated. You define a State field with an enum, then attach transition methods decorated with source and target states; calling a transition method moves the state forward only if the transition is allowed, otherwise it raises an exception.\n\nThe package is designed for low-level, database-independent FSM logic or as a wrapper around existing Django models to implement persistent workflow processes. It has been in development since 2010, with a major API redesign in version 3.0 that is incompatible with earlier versions. The library provides a simple way to enforce business rules around state changes without building custom validation logic.","worth_installing":"Yes, with conditions. The package is stable and permissively licensed, with no known vulnerabilities and low install friction. However, the aging maintenance status (311 days since last release, marked inactive) and the breaking API change in version 3.0 mean you should verify that the current version meets your Django and Python requirements and that you're comfortable with limited active development."},"id":"django-fsm","links":{"html":"https://skillfed.io/packages/django-fsm","md":"https://skillfed.io/packages/django-fsm.md","pypi":"https://pypi.org/project/django-fsm/"},"maintenance":{"status":"aging"},"meta":{"latest_release":"2025-10-07","license_spdx":null,"license_treatment":"permissive","name":"django-fsm","python_support":"unspecified","summary":"Django friendly finite state machine support."},"popularity":{"monthly_downloads":609134,"position":5776,"tier":"top_15000"},"security":{"n_vulnerabilities":0},"version":"3.0.1"}
