# gotstate
[![Security](https://github.com/KeplerOps/gotstate/actions/workflows/security.yml/badge.svg)](https://github.com/KeplerOps/gotstate/actions/workflows/security.yml)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Brad-Edwards_gotstate&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Brad-Edwards_gotstate)
[![Tests](https://github.com/KeplerOps/gotstate/actions/workflows/test.yml/badge.svg)](https://github.com/KeplerOps/gotstate/actions/workflows/test.yml)
[![Lint](https://github.com/KeplerOps/gotstate/actions/workflows/lint.yml/badge.svg)](https://github.com/KeplerOps/gotstate/actions/workflows/lint.yml)
A hierarchical finite state machine (HFSM) library for Python, focusing on reliability and ease of use.
## Features
- Hierarchical state machines with composite states
- Type-safe state and event handling
- Thread-safe event processing
- Guard conditions and transition actions
- State data management with lifecycle hooks
- Timeout events
- History states (both shallow and deep)
- Error handling
- Activation hooks for monitoring
- Plugin system
## Status
**Version 1.0.2**
Initial release!
## Design Philosophy
`gotstate` is designed with the following principles:
- **Safety**: Runtime validation and type checking
- **Clarity**: Intuitive API design
- **Reliability**: Built for real-world applications
- **Performance**: Minimal overhead
- **Flexibility**: Extensible through plugins
## Installation
Install using pip:
```bash
pip install gotstate
```
## Requirements
- Python 3.8 or higher
- See `requirements.txt` for full dependencies
## Documentation
Documentation is available in the `docs/` directory:
- API Reference
- Usage Guide
- Examples
## License
Licensed under the MIT License. See the LICENSE file for details.
## Contributing
Contributions are welcome! Please read our contributing guidelines in CONTRIBUTING.md.
## Security
This package follows Python security best practices.
Raw data
{
"_id": null,
"home_page": null,
"name": "gotstate",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "state-machine, hsm, finite-state-machine, hierarchical-state-machine",
"author": null,
"author_email": "Brad Edwards <brad@keplerops.com>",
"download_url": "https://files.pythonhosted.org/packages/68/d2/406947fbeac8f6de04df23ba89a41351b5215f5ed1fd2616af14d784a806/gotstate-1.0.3.tar.gz",
"platform": null,
"description": "# gotstate\n\n[![Security](https://github.com/KeplerOps/gotstate/actions/workflows/security.yml/badge.svg)](https://github.com/KeplerOps/gotstate/actions/workflows/security.yml)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Brad-Edwards_gotstate&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Brad-Edwards_gotstate)\n[![Tests](https://github.com/KeplerOps/gotstate/actions/workflows/test.yml/badge.svg)](https://github.com/KeplerOps/gotstate/actions/workflows/test.yml)\n[![Lint](https://github.com/KeplerOps/gotstate/actions/workflows/lint.yml/badge.svg)](https://github.com/KeplerOps/gotstate/actions/workflows/lint.yml)\n\nA hierarchical finite state machine (HFSM) library for Python, focusing on reliability and ease of use.\n\n## Features\n\n- Hierarchical state machines with composite states\n- Type-safe state and event handling\n- Thread-safe event processing\n- Guard conditions and transition actions\n- State data management with lifecycle hooks\n- Timeout events\n- History states (both shallow and deep)\n- Error handling\n- Activation hooks for monitoring\n- Plugin system\n\n## Status\n\n**Version 1.0.2**\n\nInitial release!\n\n## Design Philosophy\n\n`gotstate` is designed with the following principles:\n\n- **Safety**: Runtime validation and type checking\n- **Clarity**: Intuitive API design\n- **Reliability**: Built for real-world applications\n- **Performance**: Minimal overhead\n- **Flexibility**: Extensible through plugins\n\n## Installation\n\nInstall using pip:\n\n```bash\npip install gotstate\n```\n\n## Requirements\n\n- Python 3.8 or higher\n- See `requirements.txt` for full dependencies\n\n## Documentation\n\nDocumentation is available in the `docs/` directory:\n- API Reference\n- Usage Guide\n- Examples\n\n## License\n\nLicensed under the MIT License. See the LICENSE file for details.\n\n## Contributing\n\nContributions are welcome! Please read our contributing guidelines in CONTRIBUTING.md.\n\n## Security\n\nThis package follows Python security best practices.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A hierarchical finite state machine library",
"version": "1.0.3",
"project_urls": {
"Changelog": "https://github.com/Brad-Edwards/gotstate/blob/main/CHANGELOG.md",
"Documentation": "https://github.com/Brad-Edwards/gotstate#readme",
"Homepage": "https://github.com/Brad-Edwards/gotstate",
"Repository": "https://github.com/Brad-Edwards/gotstate"
},
"split_keywords": [
"state-machine",
" hsm",
" finite-state-machine",
" hierarchical-state-machine"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "eec04858b2d8246ce5d273c39163520d103c12cefa8ffb2d9fe8f706d59e4351",
"md5": "002ac8661a54d04e503a15fd9f1a9aa4",
"sha256": "73e17afc23cba37ef91517c871c92c60a67daee80675c2dbaf97dd89176a9e14"
},
"downloads": -1,
"filename": "gotstate-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "002ac8661a54d04e503a15fd9f1a9aa4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 3033,
"upload_time": "2024-12-27T19:28:56",
"upload_time_iso_8601": "2024-12-27T19:28:56.665947Z",
"url": "https://files.pythonhosted.org/packages/ee/c0/4858b2d8246ce5d273c39163520d103c12cefa8ffb2d9fe8f706d59e4351/gotstate-1.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "68d2406947fbeac8f6de04df23ba89a41351b5215f5ed1fd2616af14d784a806",
"md5": "a77d4b38e6be0e7b6296ff39c5224fcd",
"sha256": "7edbbdc4d2aac53187c7e2e997b1ce5c5f16441e6ccf7127c50d3f5681c64ca7"
},
"downloads": -1,
"filename": "gotstate-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "a77d4b38e6be0e7b6296ff39c5224fcd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 3732,
"upload_time": "2024-12-27T19:28:59",
"upload_time_iso_8601": "2024-12-27T19:28:59.111059Z",
"url": "https://files.pythonhosted.org/packages/68/d2/406947fbeac8f6de04df23ba89a41351b5215f5ed1fd2616af14d784a806/gotstate-1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-27 19:28:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Brad-Edwards",
"github_project": "gotstate",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "annotated-types",
"specs": [
[
"==",
"0.7.0"
]
]
},
{
"name": "async-timeout",
"specs": [
[
"==",
"5.0.1"
]
]
},
{
"name": "attrs",
"specs": [
[
"==",
"24.3.0"
]
]
},
{
"name": "Authlib",
"specs": [
[
"==",
"1.3.2"
]
]
},
{
"name": "bandit",
"specs": [
[
"==",
"1.8.0"
]
]
},
{
"name": "black",
"specs": [
[
"==",
"24.10.0"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2024.12.14"
]
]
},
{
"name": "cffi",
"specs": [
[
"==",
"1.17.1"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"3.4.0"
]
]
},
{
"name": "click",
"specs": [
[
"==",
"8.1.7"
]
]
},
{
"name": "coverage",
"specs": [
[
"==",
"7.6.9"
]
]
},
{
"name": "cryptography",
"specs": [
[
"==",
"44.0.0"
]
]
},
{
"name": "dparse",
"specs": [
[
"==",
"0.6.4"
]
]
},
{
"name": "exceptiongroup",
"specs": [
[
"==",
"1.2.2"
]
]
},
{
"name": "filelock",
"specs": [
[
"==",
"3.12.4"
]
]
},
{
"name": "flake8",
"specs": [
[
"==",
"7.1.1"
]
]
},
{
"name": "hypothesis",
"specs": [
[
"==",
"6.122.3"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.10"
]
]
},
{
"name": "iniconfig",
"specs": [
[
"==",
"2.0.0"
]
]
},
{
"name": "isort",
"specs": [
[
"==",
"5.13.2"
]
]
},
{
"name": "Jinja2",
"specs": [
[
"==",
"3.1.4"
]
]
},
{
"name": "markdown-it-py",
"specs": [
[
"==",
"3.0.0"
]
]
},
{
"name": "MarkupSafe",
"specs": [
[
"==",
"3.0.2"
]
]
},
{
"name": "marshmallow",
"specs": [
[
"==",
"3.23.1"
]
]
},
{
"name": "mccabe",
"specs": [
[
"==",
"0.7.0"
]
]
},
{
"name": "mdurl",
"specs": [
[
"==",
"0.1.2"
]
]
},
{
"name": "mypy",
"specs": [
[
"==",
"1.13.0"
]
]
},
{
"name": "mypy-extensions",
"specs": [
[
"==",
"1.0.0"
]
]
},
{
"name": "packaging",
"specs": [
[
"==",
"24.2"
]
]
},
{
"name": "pathspec",
"specs": [
[
"==",
"0.12.1"
]
]
},
{
"name": "pbr",
"specs": [
[
"==",
"6.1.0"
]
]
},
{
"name": "platformdirs",
"specs": [
[
"==",
"4.3.6"
]
]
},
{
"name": "pluggy",
"specs": [
[
"==",
"1.5.0"
]
]
},
{
"name": "psutil",
"specs": [
[
"==",
"6.0.0"
]
]
},
{
"name": "pycodestyle",
"specs": [
[
"==",
"2.12.1"
]
]
},
{
"name": "pycparser",
"specs": [
[
"==",
"2.22"
]
]
},
{
"name": "pydantic",
"specs": [
[
"==",
"2.9.2"
]
]
},
{
"name": "pydantic_core",
"specs": [
[
"==",
"2.23.4"
]
]
},
{
"name": "pyflakes",
"specs": [
[
"==",
"3.2.0"
]
]
},
{
"name": "Pygments",
"specs": [
[
"==",
"2.18.0"
]
]
},
{
"name": "pytest",
"specs": [
[
"==",
"8.3.4"
]
]
},
{
"name": "pytest-asyncio",
"specs": [
[
"==",
"0.25.0"
]
]
},
{
"name": "pytest-cov",
"specs": [
[
"==",
"6.0.0"
]
]
},
{
"name": "PyYAML",
"specs": [
[
"==",
"6.0.2"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.32.3"
]
]
},
{
"name": "rich",
"specs": [
[
"==",
"13.9.4"
]
]
},
{
"name": "ruamel.yaml",
"specs": [
[
"==",
"0.18.6"
]
]
},
{
"name": "ruamel.yaml.clib",
"specs": [
[
"==",
"0.2.12"
]
]
},
{
"name": "safety",
"specs": [
[
"==",
"3.2.13"
]
]
},
{
"name": "safety-schemas",
"specs": [
[
"==",
"0.0.10"
]
]
},
{
"name": "shellingham",
"specs": [
[
"==",
"1.5.4"
]
]
},
{
"name": "sortedcontainers",
"specs": [
[
"==",
"2.4.0"
]
]
},
{
"name": "stevedore",
"specs": [
[
"==",
"5.4.0"
]
]
},
{
"name": "tomli",
"specs": [
[
"==",
"2.2.1"
]
]
},
{
"name": "typer",
"specs": [
[
"==",
"0.15.1"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
"==",
"4.12.2"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"2.2.3"
]
]
}
],
"lcname": "gotstate"
}