Metadata-Version: 2.4
Name: pineapple-pine
Version: 0.7.3
Summary: Pineapple pipeline engine — Python runtime
Author-email: Liam Huang <liam0205@hotmail.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/Liam0205/pineapple
Project-URL: Repository, https://github.com/Liam0205/pineapple
Project-URL: Issues, https://github.com/Liam0205/pineapple/issues
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: lupa>=2.0
Requires-Dist: redis>=5.0
Requires-Dist: httpx>=0.27
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-timeout>=2.3; extra == "dev"
Requires-Dist: hypothesis>=6.100; extra == "dev"
Requires-Dist: pytest-benchmark>=4.0; extra == "dev"

# pineapple-pine

Python runtime engine for the [Pineapple](https://github.com/Liam0205/pineapple) pipeline framework.

## Installation

```bash
pip install pineapple-pine
```

## Quick Start

```python
import json
from pine.engine import Engine

config = json.dumps({
    "operators": [
        {"type_name": "recall_static", "name": "recall", "$metadata": {
            "common_input": [], "item_input": [], "common_output": [],
            "item_output": ["id", "score"]
        }, "items": [{"id": "a", "score": 1.0}]}
    ],
    "pipeline_groups": {"main": ["recall"]}
}).encode()

engine = Engine.create(config)
result = engine.execute(common={}, items=[])
print(result.common, result.items)
```

## Features

- Full DAG scheduling with data-hazard analysis
- ConsumesRowSet / MutatesRowSet / AdditiveWritesRowSet marker interfaces
- Framework-level field accessor (Strict / Default semantics)
- Lua operator support via `lupa`
- HTTP server with hot-reload
- DAG visualization (DOT / Mermaid)
- Cross-engine parity with pine-go and pine-java

## Requirements

- Python >= 3.11
- `lupa` (Lua runtime)
- `redis` (optional, for redis_get/redis_set operators)
- `httpx` (for remote_pineapple operator)

## License

Apache-2.0
