robin-sparkless 0.7.1

PySpark-like DataFrame API in Rust on Polars; no JVM.
Documentation
[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"

[project]
name = "robin-sparkless"
version = "0.7.1"
description = "PySpark-like DataFrame API in Rust (Polars backend), with Python bindings via PyO3"
readme = "README-Python.md"
requires-python = ">=3.8"
license = { text = "MIT" }
# Override PEP 639 auto-detection: do not emit license-file metadata (PyPI rejects it; see pypa/packaging-problems#865)
license-files = []
authors = [{ name = "Robin Sparkless contributors" }]
classifiers = [
    "Development Status :: 3 - Alpha",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Rust",
    "Topic :: Scientific/Engineering",
    "Typing :: Typed",
]

[project.optional-dependencies]
# PySpark (for regenerate_expected_from_pyspark.py and parity tests). Requires Java 17+.
pyspark = ["pyspark>=3.5"]
# Delta Lake Python (read/write Delta tables from Python; optional alongside Rust delta feature).
deltalake = ["deltalake>=0.20"]

[tool.maturin]
# Build the Rust lib with the pyo3 feature so the Python module is compiled.
# abi3 (py-limited-api) produces one wheel for Python 3.8+.
features = ["pyo3"]
py-limited-api = "cp38"
# Type stubs for static checkers (mypy, pyright).
include = ["robin_sparkless.pyi", "py.typed"]

[tool.mypy]
python_version = "3.8"
exclude = ["^target/", "^\\.venv/", ".*/site-packages/", ".*/\\.pyenv/"]
# Optional deps (pyspark, sparkless, deltalake) may not be installed
[[tool.mypy.overrides]]
module = ["pyspark.*", "sparkless.*", "deltalake.*", "pytest.*", "_pytest.*"]
ignore_missing_imports = true
# Don't type-check pytest (uses 3.9+ syntax); skip following into it
[[tool.mypy.overrides]]
module = ["pytest", "_pytest", "pytest.*", "_pytest.*"]
follow_imports = "skip"

[tool.ruff]
target-version = "py38"