gotstate


Namegotstate JSON
Version 1.0.3 PyPI version JSON
download
home_pageNone
SummaryA hierarchical finite state machine library
upload_time2024-12-27 19:28:59
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords state-machine hsm finite-state-machine hierarchical-state-machine
VCS
bugtrack_url
requirements annotated-types async-timeout attrs Authlib bandit black certifi cffi charset-normalizer click coverage cryptography dparse exceptiongroup filelock flake8 hypothesis idna iniconfig isort Jinja2 markdown-it-py MarkupSafe marshmallow mccabe mdurl mypy mypy-extensions packaging pathspec pbr platformdirs pluggy psutil pycodestyle pycparser pydantic pydantic_core pyflakes Pygments pytest pytest-asyncio pytest-cov PyYAML requests rich ruamel.yaml ruamel.yaml.clib safety safety-schemas shellingham sortedcontainers stevedore tomli typer typing_extensions urllib3
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.40965s