cf-basic-io
Cogniflow I/O StepPackage providing data source and sink steps.
Steps
| Step | Category | Description |
|---|---|---|
cfio:HandleSinkStep |
sink | Persist data to DuckDB, CSV, or other handles |
cfio:OpcuaReaderStep |
source | Declare a one-shot OPC UA snapshot request for the pipeline runtime |
cfio:JsonFieldSelectStep |
structural | Extract one field from a JSON payload |
cfio:TimestampToEpochStep |
structural | Convert ISO-8601 timestamp to epoch seconds |
cfio:EpochToTimestampStep |
structural | Convert epoch seconds to ISO-8601 timestamp |
cfio:ReportChartStep |
sink | Render chart output for reporting |
cfio:ReportTableStep |
sink | Render table output for reporting |
cfio:StatsRowStep |
structural | Assemble structured row outputs |
Dev/demo steps (cfbd:InlineSource, cfbd:OpcuaPhSource) now live in cf-basic-dev.
Data hive parquet persistence now lives in cf-basic-sinks as cfsink:DataHiveParquetSinkStep.
Pipeline backend operations
The package also registers pipeline backend operations:
| Operation | Type | Description |
|---|---|---|
handle_sink |
python | Persist via duckdb:// or csv:// handles |
duckdb_checkpoint |
cpp | Checkpoint pipeline state to DuckDB |
duckdb_resume_from_checkpoint |
cpp | Resume from checkpoint |
duckdb_sql |
cpp | Execute SQL on checkpoint data |
Installation
pip install cf-basic-io
With optional dependencies:
pip install cf-basic-io[duckdb] # DuckDB sink support
pip install cf-basic-io[all] # All optional deps (currently duckdb)
Virtual OPC UA pH server
The demo OPC UA server lives in the separate cf-opcua-server package.
pip install cf-opcua-server
cf-opcua-server start --interval 0.5
# or:
python -m cf_opcua_server.cli start --interval 0.5
# server runs at opc.tcp://127.0.0.1:4840/VirtualPhServer with pH/temperature nodes under ns=2
cfbd:OpcuaPhSource (from cf-basic-dev) is a pure reader and does not start servers; run the demo server externally.
C++ Extensions
Native plugin surfaces for high-performance pipeline operations that stay owned by cf-basic-io:
_duckdb_backend_ops- DuckDB checkpoint/resume (requires DuckDB C++ library)
Build with C++ extensions:
CF_BASIC_IO_ENABLE_DUCKDB_CPP=1 pip install .
cfio:OpcuaReaderStep no longer links an OPC UA SDK inside cf-basic-io. The
step is implemented by the cf_basic_io plugin and consumes the injected owner
surface exported by cf-opcua-server.
Usage
from cf_basic_io.steps import handle_sink
# Write to DuckDB
handle_sink({"value": 42}, "duckdb:///output.duckdb?table=results")
StepPackage Integration
This package registers with Cogniflow via the cogniflow.steps entry point and ships steps.nq as its sole manifest. The cf:StepPackage node declares cf:packageId cf.basic.io.
Publishing
cf_basic_io is published with the dedicated Windows workflow:
- Workflow:
.github/workflows/cf_basic_io_windows_publish.yml - Package directory:
sandcastle/cf_basic_steps/cf_basic_io - PyPI tag:
cf-basic-io-v<version> - TestPyPI tag:
cf-basic-io-v<version>-test
The publish path validates the default package build. OPC UA execution now lives behind the runtime-owned cf-opcua-server boundary, so no open62541 toggle is required for cf-basic-io publishing.
Local preflight:
powershell -ExecutionPolicy Bypass -File scripts/mimic_windows_python_publish_workflow.ps1 `
-WorkflowFile .github/workflows/cf_basic_io_windows_publish.yml `
-PackageDir sandcastle/cf_basic_steps/cf_basic_io `
-PythonExe py `
-PythonVersion 3.14
Queue a dry-run dispatch:
powershell -ExecutionPolicy Bypass -File scripts/queue_windows_python_publish_workflow.ps1 `
-WorkflowFile .github/workflows/cf_basic_io_windows_publish.yml `
-PackageDir sandcastle/cf_basic_steps/cf_basic_io `
-PublishTarget testpypi `
-Ref main `
-RequireLocalPass `
-DryRun
Watch queued runs:
gh run list --workflow cf_basic_io_windows_publish.yml --limit 10
gh run watch --exit-status
Metadata
Release files for cf-basic-io 0.2.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cf_basic_io-0.2.6.tar.gz | 36.7 kB | Without provenance | Details for cf_basic_io-0.2.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| cf_basic_io-0.2.6-cp314-cp314-win_amd64.whl | CPython 3.14 | CPython 3.14 | Windows x86-64 | Details for cf_basic_io-0.2.6-cp314-cp314-win_amd64.whl |
Total release size: 70.9 kB
Release files / cf_basic_io-0.2.6.tar.gz
| Download URL | cf_basic_io-0.2.6.tar.gz |
|---|---|
| Size | 36.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3bbec77c799747ad4c2cef36ed8dd893765dca62f44976db696a98946fd38b07
|
|
BLAKE2b-256 checksum How to use checksums |
fa16512ed610aef731e9b86a9dc7f6be62ee93339417760fd3103286ac60f834
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / cf_basic_io-0.2.6-cp314-cp314-win_amd64.whl
| Download URL | cf_basic_io-0.2.6-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 34.1 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f1f5a491c726197c79f83f7eb88882245237e3c891c286e87e194bce1612259f
|
|
BLAKE2b-256 checksum How to use checksums |
1af77299e25a7cb4757496634bc27e5ca5bc82fb7ea8a7ad76e1d38f24ea17c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Security for cf-basic-io 0.2.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.