scirs2-python 0.3.4

Python bindings for SciRS2 - A comprehensive scientific computing library in Rust (SciPy alternative)
Documentation
[package]
name = "scirs2-python"
version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version = "1.70"
description = "Python bindings for SciRS2 - A comprehensive scientific computing library in Rust (SciPy alternative)"
license.workspace = true
repository.workspace = true
homepage = "https://github.com/cool-japan/scirs"
documentation = "https://docs.rs/scirs2-python"
readme = "README.md"
keywords = ["scientific", "python", "numpy", "scipy", "machine-learning"]
categories = ["science", "mathematics", "algorithms"]

[lib]
name = "scirs2"
crate-type = ["cdylib", "rlib"]

[dependencies]
# Core SciRS2 dependencies with Python feature (workspace-based)
# Note: Features are also controlled via scirs2-python's feature flags for proper propagation
scirs2-core = { workspace = true, features = ["python", "array", "serialization"] }
scirs2-cluster = { workspace = true, features = ["python"] }
scirs2-series = { workspace = true, features = ["python"] }
scirs2-linalg = { workspace = true, features = ["python"] }
scirs2-stats = { workspace = true, features = ["python"] }
scirs2-fft = { workspace = true, features = ["python", "oxifft"] }
scirs2-optimize = { workspace = true, features = ["python"] }
scirs2-special = { workspace = true }
scirs2-integrate = { workspace = true }
scirs2-interpolate = { workspace = true }
scirs2-signal = { workspace = true }
scirs2-spatial = { workspace = true }
scirs2-sparse = { workspace = true }
scirs2-ndimage = { workspace = true }
scirs2-graph = { workspace = true }
scirs2-metrics = { workspace = true }
scirs2-io = { workspace = true }
scirs2-datasets = { workspace = true, default-features = false }
scirs2-transform = { workspace = true }
scirs2-text = { workspace = true }
scirs2-vision = { workspace = true }
scirs2-autograd = { workspace = true }
scirs2-neural = { workspace = true }

# Python bindings
pyo3 = { workspace = true }
scirs2-numpy = { workspace = true }
pyo3-async-runtimes = { workspace = true }  # Async Python support (successor to pyo3-asyncio)

# Async runtime
tokio = { workspace = true }

# Parallelism (used for batch APIs)
rayon.workspace = true

# N-dimensional arrays (used for batch linalg helpers)
ndarray = { workspace = true }

# Error handling
thiserror.workspace = true

# Image processing (needed for vision module)
image.workspace = true

[features]
default = ["cluster", "series", "linalg", "stats", "fft", "optimize", "special", "integrate", "interpolate", "signal", "spatial", "sparse", "ndimage", "graph", "metrics", "io", "datasets", "transform", "text", "vision", "autograd", "neural", "oxifft", "random"]

# Module features
cluster = []
series = []
linalg = []
stats = []
fft = []
optimize = []
special = []
integrate = []
interpolate = []
signal = []
spatial = []
sparse = []
ndimage = []
graph = ["random"]  # Graph generators require random number generation
metrics = []
io = []
datasets = []
transform = []
text = []
vision = []
autograd = []
neural = []

# Core feature propagation
random = ["scirs2-core/random"]  # Random number generation from scirs2-core

# Performance optimization features
oxifft = ["scirs2-fft/oxifft"]  # Pure Rust high-performance FFT

# Acceleration features (passed through to subcrates)
simd = ["scirs2-core/simd"]
parallel = ["scirs2-core/parallel"]
gpu = ["scirs2-core/gpu"]

# All modules
full = ["cluster", "series", "linalg", "stats", "fft", "optimize", "special", "integrate", "interpolate", "signal", "spatial", "sparse", "ndimage", "graph", "metrics", "io", "datasets", "transform", "text", "vision", "autograd", "neural", "oxifft"]