wingfoil-python 8.0.0

python bindings for wingfoil - graph based stream processing framework
Documentation
[build-system]
requires = ["maturin>=1.4,<2.0"]
build-backend = "maturin"

[project]
name = "wingfoil"
dynamic = ["version"]
description = "Python bindings for the wingfoil Rust library"
authors = [{ name = "Jake Mitchell" }]
license = "MIT"
readme = "README.md"
requires-python = ">=3.8"

dependencies = [
    "pandas>=1.0.0"
]

classifiers = [
    "Programming Language :: Python",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
    "Programming Language :: Rust",
    "Programming Language :: Python :: Implementation :: CPython",
]

[project.optional-dependencies]
dev = ["maturin>=1.4,<2.0", "pytest>=7", "pyzmq>=25"]

[tool.maturin]
# Keep `iceoryx2` opt-in for Python builds. Enabling it by default can
# make wheels Linux/POSIX-only due to iceoryx2 dependencies.
features = ["pyo3/extension-module"]
python-source = "python"
module-name = "wingfoil._wingfoil"
include = ["Cargo.toml"]

[tool.coverage.run]
source = ["wingfoil"]

[tool.coverage.report]
omit = ["*/_wingfoil*"]

[tool.pytest.ini_options]
# Integration tests are deselected by default so the regular `pytest` run is
# never silently green against a service that is not actually up. Each
# integration workflow opts in explicitly, e.g. `pytest -m requires_etcd`.
# Running a marker selection without the backing service will fail loudly
# with a real ConnectionRefused/import error — not a skip.
markers = [
    "requires_etcd: needs etcd on localhost:2379",
    "requires_kdb: needs KDB+ on localhost:5000",
    "requires_otel: needs an OTel collector on localhost:4318",
    "requires_iceoryx2: needs wingfoil built with --features iceoryx2",
    "requires_web: needs a wingfoil web server (runs in-process)",
    "requires_kafka: needs a Kafka-compatible broker on localhost:9092",
    "requires_redis: needs Redis on localhost:6379",
    "requires_aeron: needs an Aeron media driver (and wingfoil built with --features aeron)",
    "requires_postgres: needs PostgreSQL on localhost:5432",
]
addopts = "-m 'not requires_etcd and not requires_kdb and not requires_otel and not requires_iceoryx2 and not requires_web and not requires_kafka and not requires_redis and not requires_aeron and not requires_postgres'"