Metadata-Version: 2.4
Name: dataknobs-fsm
Version: 0.1.0
Summary: Finite State Machine framework with data modes, resource management, and streaming support
Project-URL: Homepage, https://github.com/dataknobs/dataknobs
Project-URL: Bug Tracker, https://github.com/dataknobs/dataknobs/issues
Project-URL: Documentation, https://dataknobs.readthedocs.io
Author-email: DataKnobs Team <team@dataknobs.com>
Keywords: data-processing,fsm,orchestration,state-machine,workflow
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Requires-Dist: aiofiles>=23.0.0
Requires-Dist: click>=8.1.0
Requires-Dist: dataknobs-config>=0.1.0
Requires-Dist: dataknobs-data>=0.2.0
Requires-Dist: dataknobs-structures>=0.1.0
Requires-Dist: dataknobs-utils>=0.1.0
Requires-Dist: ijson>=3.2.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: typing-extensions>=4.8.0
Provides-Extra: all
Requires-Dist: aiohttp>=3.9.0; extra == 'all'
Requires-Dist: anthropic>=0.7.0; extra == 'all'
Requires-Dist: chromadb>=0.4.0; extra == 'all'
Requires-Dist: faiss-cpu>=1.7.4; extra == 'all'
Requires-Dist: httpx>=0.25.0; extra == 'all'
Requires-Dist: langchain>=0.1.0; extra == 'all'
Requires-Dist: openai>=1.0.0; extra == 'all'
Requires-Dist: pgvector>=0.2.0; extra == 'all'
Provides-Extra: dev
Requires-Dist: black>=24.0.0; extra == 'dev'
Requires-Dist: mkdocs-material>=9.0.0; extra == 'dev'
Requires-Dist: mkdocs>=1.5.0; extra == 'dev'
Requires-Dist: mypy>=1.0.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.11.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: http
Requires-Dist: aiohttp>=3.9.0; extra == 'http'
Requires-Dist: httpx>=0.25.0; extra == 'http'
Provides-Extra: llm
Requires-Dist: anthropic>=0.7.0; extra == 'llm'
Requires-Dist: langchain>=0.1.0; extra == 'llm'
Requires-Dist: openai>=1.0.0; extra == 'llm'
Provides-Extra: vector
Requires-Dist: chromadb>=0.4.0; extra == 'vector'
Requires-Dist: faiss-cpu>=1.7.4; extra == 'vector'
Requires-Dist: pgvector>=0.2.0; extra == 'vector'
Description-Content-Type: text/markdown

# DataKnobs FSM

Finite State Machine framework with data modes, resource management, and streaming support.

## Features

- **Data Modes**: COPY, REFERENCE, and DIRECT modes for flexible data handling
- **Transaction Management**: Single, Batch, and Manual transaction strategies
- **Resource Management**: Built-in support for databases, files, HTTP services, LLMs, and vector stores
- **Streaming Support**: Process large datasets with chunking and backpressure handling
- **Flexible Configuration**: YAML/JSON configuration with schema validation
- **Built-in Functions**: Library of common validation and transformation functions

## Installation

```bash
pip install dataknobs-fsm
```

## Quick Start

```python
from dataknobs_fsm import FSM, StateDefinition, DataMode

# Define states
start = StateDefinition(name="start", type=StateType.START)
process = StateDefinition(name="process", data_mode=DataMode.COPY)
end = StateDefinition(name="end", type=StateType.END)

# Create FSM
fsm = FSM()
fsm.add_state(start)
fsm.add_state(process)
fsm.add_state(end)

# Process data
result = fsm.process({"input": "data"})
```

## Documentation

See the [docs](docs/) directory for detailed documentation.

## Development

This package is part of the DataKnobs ecosystem and follows the project's development guidelines.