gotstate


Namegotstate JSON
Version 1.0.4 PyPI version JSON
download
home_pageNone
SummaryA hierarchical finite state machine library
upload_time2025-01-26 16:48:27
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/81/80/0f9a50e98916a0082a48fddacb5cfc94987d1e1d5eb4dc9553c8fdf228b3/gotstate-1.0.4.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.4",
    "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": null,
            "digests": {
                "blake2b_256": "3bf52effe4719dd7e6f620432d795fda2a51195a14dd8123cd98432247a6933a",
                "md5": "5d6bfe8367d589f40e6d93e65945e0df",
                "sha256": "552798d864a92e9fd5808c58bd20a0a193e517c41153cc83965f6cb47a738914"
            },
            "downloads": -1,
            "filename": "gotstate-1.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5d6bfe8367d589f40e6d93e65945e0df",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 34938,
            "upload_time": "2025-01-26T16:48:25",
            "upload_time_iso_8601": "2025-01-26T16:48:25.502176Z",
            "url": "https://files.pythonhosted.org/packages/3b/f5/2effe4719dd7e6f620432d795fda2a51195a14dd8123cd98432247a6933a/gotstate-1.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "81800f9a50e98916a0082a48fddacb5cfc94987d1e1d5eb4dc9553c8fdf228b3",
                "md5": "4ab6afebbc78e5fcf165970f7103e3e5",
                "sha256": "5f058e42d1a71e34caea06a71e855ed122ee738dedc5037f3a5a2ff02095f960"
            },
            "downloads": -1,
            "filename": "gotstate-1.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "4ab6afebbc78e5fcf165970f7103e3e5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 27248,
            "upload_time": "2025-01-26T16:48:27",
            "upload_time_iso_8601": "2025-01-26T16:48:27.514905Z",
            "url": "https://files.pythonhosted.org/packages/81/80/0f9a50e98916a0082a48fddacb5cfc94987d1e1d5eb4dc9553c8fdf228b3/gotstate-1.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-26 16:48:27",
    "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: 1.98863s