Metadata-Version: 2.4
Name: catnip-lang
Version: 0.1.2
Summary: Catnip language
Author-email: Aristofor Kolomb <aristofor@gmail.com>
License-Expression: GPL-3.0-or-later
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Interpreters
Requires-Python: >=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click<9,>=8.3
Requires-Dist: xxhash>=3.0
Provides-Extra: test
Requires-Dist: pytest<10,>=9.0; extra == "test"
Requires-Dist: pytest-xdist<4,>=3.8; extra == "test"
Requires-Dist: pytest-rerunfailures<17,>=16.0; extra == "test"
Provides-Extra: dev
Requires-Dist: catnip-lang[test]; extra == "dev"
Requires-Dist: cibuildwheel<5,>=4.0; extra == "dev"
Requires-Dist: build<2,>=1.4; extra == "dev"
Requires-Dist: ruff<1,>=0.15; extra == "dev"
Requires-Dist: numpy<3,>=2.4; extra == "dev"
Requires-Dist: pandas<4,>=3.0; extra == "dev"
Requires-Dist: markdown<4,>=3.10; extra == "dev"
Requires-Dist: pygments<3,>=2.19; extra == "dev"
Requires-Dist: httpx[http2]<1,>=0.28; extra == "dev"
Requires-Dist: setuptools-rust<2,>=1.12; extra == "dev"
Provides-Extra: examples-all
Requires-Dist: cryptography<49,>=43; extra == "examples-all"
Provides-Extra: codex-data-analytics
Requires-Dist: numpy<3,>=2.4; extra == "codex-data-analytics"
Requires-Dist: pandas<4,>=3.0; extra == "codex-data-analytics"
Requires-Dist: duckdb<2,>=1.4; extra == "codex-data-analytics"
Requires-Dist: duckdb-engine>=0.17; extra == "codex-data-analytics"
Requires-Dist: sqlalchemy<3,>=2.0; extra == "codex-data-analytics"
Requires-Dist: polars<2,>=1.38; extra == "codex-data-analytics"
Requires-Dist: pyarrow<24,>=23; extra == "codex-data-analytics"
Provides-Extra: codex-files-formats
Requires-Dist: pyyaml<7,>=6.0; extra == "codex-files-formats"
Requires-Dist: lxml<7,>=6.0; extra == "codex-files-formats"
Requires-Dist: jmespath<2,>=1.1; extra == "codex-files-formats"
Requires-Dist: orjson<4,>=3.11; extra == "codex-files-formats"
Requires-Dist: pyarrow<24,>=23; extra == "codex-files-formats"
Provides-Extra: codex-geometry
Requires-Dist: numpy<3,>=2.4; extra == "codex-geometry"
Requires-Dist: pillow<13,>=12.1; extra == "codex-geometry"
Requires-Dist: shapely<3,>=2.1; extra == "codex-geometry"
Requires-Dist: scipy<2,>=1.17; extra == "codex-geometry"
Provides-Extra: codex-geospatial
Requires-Dist: geopy<3,>=2.4; extra == "codex-geospatial"
Requires-Dist: pyproj<4,>=3.7; extra == "codex-geospatial"
Requires-Dist: shapely<3,>=2.1; extra == "codex-geospatial"
Requires-Dist: rasterio<2,>=1.5; extra == "codex-geospatial"
Requires-Dist: geopandas<2,>=1.1; extra == "codex-geospatial"
Requires-Dist: osmnx<3,>=2.1; extra == "codex-geospatial"
Requires-Dist: folium<1,>=0.20; extra == "codex-geospatial"
Requires-Dist: branca<1,>=0.8; extra == "codex-geospatial"
Requires-Dist: pystac-client<1,>=0.9; extra == "codex-geospatial"
Provides-Extra: codex-images-media
Requires-Dist: numpy<3,>=2.4; extra == "codex-images-media"
Requires-Dist: scipy<2,>=1.17; extra == "codex-images-media"
Requires-Dist: opencv-python<5,>=4.13; extra == "codex-images-media"
Requires-Dist: pillow<13,>=12.1; extra == "codex-images-media"
Requires-Dist: pyvips[binary]<4,>=3.1; extra == "codex-images-media"
Provides-Extra: codex-machine-learning
Requires-Dist: numpy<3,>=2.4; extra == "codex-machine-learning"
Requires-Dist: scikit-learn<2,>=1.8; extra == "codex-machine-learning"
Requires-Dist: torch<3,>=2.10; extra == "codex-machine-learning"
Requires-Dist: torchvision<1,>=0.25; extra == "codex-machine-learning"
Provides-Extra: codex-nlp-text
Requires-Dist: spacy<3.8.14,>=3.8; extra == "codex-nlp-text"
Provides-Extra: codex-optimization
Requires-Dist: numpy<3,>=2.4; extra == "codex-optimization"
Requires-Dist: scipy<2,>=1.17; extra == "codex-optimization"
Requires-Dist: matplotlib<4,>=3.10; extra == "codex-optimization"
Provides-Extra: codex-persistence
Requires-Dist: redis<8,>=7.3; extra == "codex-persistence"
Requires-Dist: orjson<4,>=3.11; extra == "codex-persistence"
Provides-Extra: codex-structural-biology
Requires-Dist: gemmi<1,>=0.7; extra == "codex-structural-biology"
Requires-Dist: numpy<3,>=2.4; extra == "codex-structural-biology"
Requires-Dist: scipy<2,>=1.17; extra == "codex-structural-biology"
Requires-Dist: matplotlib<4,>=3.10; extra == "codex-structural-biology"
Requires-Dist: networkx<4,>=3.6; extra == "codex-structural-biology"
Provides-Extra: codex-symbolic-graphs
Requires-Dist: sympy<2,>=1.14; extra == "codex-symbolic-graphs"
Requires-Dist: networkx<4,>=3.6; extra == "codex-symbolic-graphs"
Provides-Extra: codex-utils
Requires-Dist: tqdm<5,>=4.67; extra == "codex-utils"
Provides-Extra: codex-visualization
Requires-Dist: numpy<3,>=2.4; extra == "codex-visualization"
Requires-Dist: matplotlib<4,>=3.10; extra == "codex-visualization"
Requires-Dist: seaborn<1,>=0.13; extra == "codex-visualization"
Requires-Dist: plotly<7,>=6.6; extra == "codex-visualization"
Requires-Dist: hvplot<1,>=0.12; extra == "codex-visualization"
Requires-Dist: holoviews<2,>=1.23; extra == "codex-visualization"
Provides-Extra: codex-web
Requires-Dist: httpx[http2]<1,>=0.28; extra == "codex-web"
Requires-Dist: selectolax<0.5,>=0.4.7; extra == "codex-web"
Provides-Extra: codex-all
Requires-Dist: catnip-lang[codex-data-analytics]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-files-formats]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-geometry]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-geospatial]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-images-media]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-machine-learning]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-nlp-text]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-optimization]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-persistence]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-structural-biology]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-symbolic-graphs]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-utils]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-visualization]; extra == "codex-all"
Requires-Dist: catnip-lang[codex-web]; extra == "codex-all"
Dynamic: license-file

# Catnip language

Version <!-- catnip:version -->0.1.2<!-- /catnip:version -->

Documentation: [https://docs.catnip-lang.io](https://docs.catnip-lang.io)

Catnip est un langage de script embarqué pour applications Python. Il permet de définir des règles métier, des workflows
et des transformations de données sans modifier le code applicatif.

## Installation

```bash
pip install catnip-lang
```

## Utilisation rapide

### Exécution en CLI

```bash
catnip script.cat
catnip -c "2 + 3"
echo "2 + 3" | catnip
```

### Intégration Python (embedded)

```python
from catnip import Catnip

engine = Catnip()
engine.parse("x = 2 + 3")
result = engine.execute()
print(result)
```

## Cas d'usage typiques

- Règles métier configurables sans redéploiement
- Scripts utilisateur sandboxés dans une application web
- Pipelines de transformation de données (ETL)
- Validation de configuration et logique d'éligibilité

## Statut du projet

Catnip est utilisé en production pour des cas d'expressions et de transformation de données. Le projet est encore en
phase `0.x`, avec des évolutions en cours sur certains aspects.

## Documentation

- [Guide utilisateur](docs/user/)
- [Référence du langage](docs/lang/LANGUAGE.md)
- [Exemples d'embedding](docs/examples/embedding/)
- [Documentation développeur](docs/dev/)
- [Introduction](docs/INTRODUCTION.md)

## Code source

- Framagit (principal): https://framagit.org/aristofor/catnip
- GitHub (miroir): https://github.com/aristofor/catnip

## Licence

GPLv3
