Metadata-Version: 2.4
Name: cf-basic-signal
Version: 0.1.0
Summary: Cogniflow basic signal step package (FIFO/average) with optional C++ acceleration.
Author: Cogniflow
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: asyncua>=1.1.8

# cf.basic.signal StepPackage

Basic signal-processing steps packaged for Cogniflow.

## Steps
- `cf:FifoWindowBufferStep` (windowed buffer)
- `cf:AverageStep` (arithmetic / geometric / harmonic mean)

## Files
- `cf-step-package.yaml` - manifest
- `steps.ttl` - ontology fragment for the steps
- `cf_basic_signal/steps.py` - implementations (with optional C++ backend)
- `examples/golden_fifo_avg.json` - minimal golden pipeline (InlineSource -> FIFO -> Average)

## Quick check
1) Install package:
```python
from core.step_package_manager import StepPackageManager
m = StepPackageManager("path/to/gui_sandbox.duckdb")
m.install_from_manifest("cf_basic_signal/cf-step-package.yaml")
```
2) Load server and verify:
```python
from core.algorithm_server import AlgorithmServer
s = AlgorithmServer("path/to/gui_sandbox.duckdb")
assert s.step_registry.has_step("cf:FifoWindowBufferStep")
assert s.step_registry.has_step("cf:AverageStep")
```
3) Run the golden pipeline JSON via your pipeline runner. Expected window: `[4,5,6]`, mean `5.0`, small SE.

## Wheel builds & publishing
- Wheels are built with `cibuildwheel` for CPython 3.9-3.12 across Windows, Linux, and macOS in `.github/workflows/cibuildwheel.yml` (config lives in `pyproject.toml`).
- The workflow runs the existing `cf_basic_steps` test job first, then builds wheels for both `cf-basic-signal` and `cf-basic-io`, and uploads them as artifacts.
- PyPI publishing happens only on tagged pushes matching `v*` (excluding tags that contain `-test`), uploading both wheels and an sdist via the trusted publisher action (`pypa/gh-action-pypi-publish`).
- TestPyPI publishing happens on tags like `v*-test` using the same trusted publisher action (no secrets needed; uses OIDC).
