standard_knowledge_py 0.1.1

Programmatically augmenting CF Standards with operational knowledge.
Documentation
[build-system]
requires = ["maturin>=1.14.0,<2.0"]
build-backend = "maturin"

[project]
name = "standard_knowledge"
requires-python = ">=3.12"
classifiers = [
    "Programming Language :: Rust",
    "Programming Language :: Python :: Implementation :: CPython",
    "Programming Language :: Python :: Implementation :: PyPy",
]
dynamic = ["version"]
readme = "README.md"
description = "Programmatically augmenting CF Standards with operational knowledge."
license = "Apache-2.0"

[dependency-groups]
dev = [
    "pytest>9",
]

[tool.maturin]
features = ["pyo3/extension-module"]
module-name = "standard_knowledge._standard_knowledge_py"
python-source = "python"
exclude = ["README.md"]


[tool.uv]
# Only resolve dependencies released at least 7 days ago (supply-chain cooldown)
exclude-newer = "7 days"
# Rebuild package when any rust files change
cache-keys = [{file = "pyproject.toml"}, {file = "Cargo.toml"}, {file = "src/**/*.rs"}, {file = "python/**/*.py"}, {file = "../core/standards/*.yaml"}, {file = "../core/src/**/*.rs"}]
# Uncomment to build rust code in development mode
# config-settings = { build-args = '--profile=dev' }

[tool.pytest]
minversion = "9.0"
addopts = ["-v", "-ra", "--strict-markers", "--strict-config"]
testpaths = ["tests"]
xfail_strict = true
filterwarnings = [
    "error",
    # The compiled extension does not yet declare free-threaded support, so on
    # free-threaded builds (e.g. 3.14t) CPython re-enables the GIL and warns at
    # import time. Ignore it until the PyO3 module opts in via Py_mod_gil.
    # https://pyo3.rs/v0.29.0/free-threading.html
    "ignore:The global interpreter lock:RuntimeWarning",
]
log_level = "INFO"

[tool.cibuildwheel]
# Use the faster uv-backed build frontend
build-frontend = "build[uv]"
# Run the package tests using `pytest` after building wheels
test-groups = ["dev"]
test-command = "python -m pytest {project}/py/tests -xv"
skip = [
    "cp313-pyodide_wasm32", # not compatible with the pyodide version
]

[tool.cibuildwheel.pyodide]
pyodide-version = "314.0.0"
environment = {"RUSTUP_TOOLCHAIN" = "1.93.0"}

[tool.repo-review]
ignore = [
    "MY100", # Mypy
    "PY004", # Docs folder

    # Missed due to package not in the root
    "PY003", # License file
    "PY006", # Pre-commit
    "PY007", # Nox
    "GH100", # Github Actions
]

[tool.ruff]
lint.extend-select = [
    "B",  # flake8-bugbear
    "I",  # isort
    "UP",  # pyupgrade
]