cql2 0.6.0

Parse, validate, and convert Common Query Language (CQL2) text and JSON
Documentation
[project]
name = "cql2"
requires-python = ">=3.10"
classifiers = [
    "Programming Language :: Rust",
    "Programming Language :: Python :: Implementation :: CPython",
    "Programming Language :: Python :: Implementation :: PyPy",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
]
dynamic = ["version", "readme", "summary", "description", "description_content_type", "keywords", "home_page", "author", "author_email", "license", "project_url"]

[project.scripts]
cql2 = "cql2:main"

[dependency-groups]
dev = [
    "maturin[patchelf]>=1.7.8",
    "mike>=2.1.3",
    "mkdocs-material[imaging]>=9.7.6",
    "mkdocstrings[python]>=0.26.1",
    "mypy>=1.11.2",
    "pytest>=8.3.3",
    "ruff>=0.15.10",
]

[build-system]
requires = ["maturin>=1.7,<2.0"]
build-backend = "maturin"

[tool.maturin]
manifest-path = "python/Cargo.toml"

[tool.uv]
# The wheel is a compiled Rust extension, but uv keys its build cache on `pyproject.toml` alone,
# which no Rust change touches. Without these keys `uv run` reinstalls a cached wheel built from
# whatever the sources said last time, so `pytest` silently tests stale behaviour — including right
# after `maturin dev`, whose fresh build the sync overwrites. The globs stay scoped to the source
# directories: a bare `**/*.rs` would walk `target/`.
cache-keys = [
    { file = "pyproject.toml" },
    { file = "Cargo.toml" },
    { file = "Cargo.lock" },
    { file = "src/**/*" },
    { file = "cli/Cargo.toml" },
    { file = "cli/src/**/*" },
    { file = "python/Cargo.toml" },
    { file = "python/src/**/*" },
]