kshana 0.32.0

Open, reproducible PNT-resilience simulator with quantum-sensor performance models
Documentation
[build-system]
# 1.9.2 is the floor, not 1.5: `license = "AGPL-3.0-only"` below is the PEP 639
# expression form, and maturin only emits it as core-metadata `License-Expression`
# from 1.9.2 on. 1.9.1 and older write the SPDX string into the deprecated `License`
# field instead (measured: 1.5.1 -> Metadata-Version 2.3 + License:, 1.8.7/1.9.0/1.9.1
# -> 2.4 + License:, 1.9.2/1.15.0 -> 2.4 + License-Expression:). A dual-licensed
# project cannot afford its licence landing in a deprecated free-text field.
requires = ["maturin>=1.9.2,<2"]
build-backend = "maturin"

[project]
name = "kshana"
description = "Open hybrid quantum/classical PNT performance simulator"
requires-python = ">=3.9"
# Dual-licensed: AGPL-3.0-only for open use, or a commercial licence from
# Ashforde OÜ (contact@ashforde.org). See LICENSE and LICENSING.md.
license = "AGPL-3.0-only"
authors = [{ name = "Chakshu Baweja", email = "contact@ashforde.org" }]
readme = "README.pypi.md"
keywords = ["pnt", "navigation", "quantum", "gnss", "simulation"]
classifiers = [
  "Programming Language :: Rust",
  "Programming Language :: Python :: 3",
  "Topic :: Scientific/Engineering",
  "Intended Audience :: Science/Research",
]
dynamic = ["version"]

# numpy is a TEST-ONLY dependency. The extension has zero runtime NumPy need, so
# it is deliberately NOT in [project] dependencies (no false dependency claim);
# it lives only here under the `test` extra and in the CI install step.
[project.optional-dependencies]
test = ["pytest", "numpy"]

[project.urls]
Homepage = "https://kshana.dev"
Repository = "https://github.com/ashfordeOU/kshana"
Documentation = "https://docs.rs/kshana"

[tool.maturin]
# Build the extension module from the `python` Cargo feature; abi3 wheels work
# across CPython >= 3.9. maturin sets the macOS `-undefined dynamic_lookup` link
# flag automatically.
features = ["python"]
# No `include` for the type stub: maturin already detects the root kshana.pyi and
# installs it as kshana/__init__.pyi, and synthesizes kshana/py.typed, so mypy and
# pyright see the typed surface. Listing them here ALSO copied both to the wheel
# ROOT, which put a kshana.pyi and an unowned py.typed straight into site-packages
# (py.typed is a per-package marker: a copy at the root belongs to no distribution,
# and `pip uninstall kshana` would delete whichever package really owned it).