ruopus 0.1.2

A pure-Rust implementation of the Opus audio codec (RFC 6716). No FFI; unsafe confined to documented SIMD kernels.
Documentation
[build-system]
requires = ["maturin>=1.14,<2.0"]
build-backend = "maturin"

[project]
name = "ruopus"
description = "A pure-Rust implementation of the Opus audio codec (RFC 6716) - fast, with first-class NumPy interop."
readme = "python/README.md"
license = { text = "MIT" }
authors = [{ name = "Jack Geraghty (jmg049)", email = "jgeraghty049@gmail.com" }]
maintainers = [{ name = "Jack Geraghty (jmg049)", email = "jgeraghty049@gmail.com" }]
requires-python = ">=3.9"
keywords = ["opus", "audio", "codec", "rfc6716", "rust", "numpy"]
classifiers = [
    "Development Status :: 3 - Alpha",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3",
    "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 :: Implementation :: CPython",
    "Programming Language :: Rust",
    "Topic :: Multimedia :: Sound/Audio",
    "Topic :: Multimedia :: Sound/Audio :: Conversion",
    "Typing :: Typed",
]
dynamic = ["version"]
dependencies = [
    "maturin>=1.14.1",
    "numpy>=1.22",
]

[project.urls]
"Homepage" = "https://github.com/jmg049/ruopus"
"Repository" = "https://github.com/jmg049/ruopus"
"Documentation" = "https://docs.rs/ruopus"
"Bug Reports" = "https://github.com/jmg049/ruopus/issues"

[project.optional-dependencies]
docs = [
    "sphinx>=7.0.0",
    "sphinx-rtd-theme>=2.0.0",
    "myst-parser>=2.0.0",
    "sphinx-copybutton>=0.5.0",
]
test = ["pytest>=7.4.0", "numpy>=1.22"]

[tool.maturin]
# Build the extension with the `python` feature on top of the crate defaults;
# `extension-module` and `abi3-py39` ride along via that feature (see Cargo.toml).
features = ["python"]
# The compiled extension is private (`ruopus._ruopus`); `python/ruopus/` is the
# public package that re-exports it, so Python users never see Rust code or a
# bare `.so` import.
module-name = "ruopus._ruopus"
python-source = "python"
include = ["python/ruopus/**/*.pyi", "python/ruopus/py.typed"]
exclude = ["python/tests/*", "python/examples/*"]

[tool.uv]
# Rebuild the compiled extension whenever the Rust sources or manifests change.
# Without this uv keys its build cache on the package version alone, so after
# editing src/**/*.rs (e.g. adding encoder constructor arguments) `uv run` would
# reinstall a stale cached wheel instead of recompiling.
cache-keys = [
    { file = "pyproject.toml" },
    { file = "Cargo.toml" },
    { file = "Cargo.lock" },
    { file = "src/**/*.rs" },
    { file = "python/ruopus/**" },
]