Metadata-Version: 2.4
Name: grass-python-freethreaded
Version: 0.13.4
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Rust
Summary: In-process Rust Sass compiler (grass) bindings for the Odoo 19 asset pipeline
License: MIT
Requires-Python: >=3.11
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM

# grass-python

PyO3 bindings around the pure-Rust [`grass`](https://github.com/connorskees/grass)
Sass compiler (0.13.4, dart-sass 1.54.3 compatible) for the Odoo 19 asset
pipeline. Compilation runs in-process (no subprocess, GIL-safe under free-threaded
Python), replacing the legacy `sassc`/`sass` CLI compilers.

## Build & Publish

Local build:

```bash
pip install maturin
maturin build --release        # or: pip install .
```

Publishing is handled by `.github/workflows/grass-python.yml` (repo root): on a
`grass-python-v*` tag it builds cp314t wheels for `darwin-arm64` and
`linux-x86_64` plus an sdist, and publishes them to PyPI (Trusted Publisher,
`pypi` environment). The Odoo repo pins the published package in
`requirements.txt` (`grass-python==0.13.4`), so neither the Docker image nor
dev installs compile Rust at build time.

## Usage

```python
import grass_python

css = grass_python.compile("a { b { color: red; } }")
```

Raises `grass_python.SassError` on invalid input.
