Metadata-Version: 2.4
Name: catnip-lang
Version: 0.1.0
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<4,>=3.4; 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-data
Requires-Dist: numpy<3,>=2.4; extra == "examples-data"
Requires-Dist: pandas<4,>=3.0; extra == "examples-data"
Requires-Dist: duckdb<2,>=1.4; extra == "examples-data"
Requires-Dist: duckdb-engine>=0.17; extra == "examples-data"
Requires-Dist: sqlalchemy<3,>=2.0; extra == "examples-data"
Requires-Dist: polars<2,>=1.38; extra == "examples-data"
Requires-Dist: pyarrow<24,>=23; extra == "examples-data"
Provides-Extra: examples-files
Requires-Dist: pyyaml<7,>=6.0; extra == "examples-files"
Requires-Dist: lxml<7,>=6.0; extra == "examples-files"
Requires-Dist: jmespath<2,>=1.1; extra == "examples-files"
Provides-Extra: examples-web
Requires-Dist: httpx[http2]<1,>=0.28; extra == "examples-web"
Requires-Dist: selectolax<0.5,>=0.4.7; extra == "examples-web"
Requires-Dist: redis<8,>=7.3; extra == "examples-web"
Provides-Extra: examples-viz
Requires-Dist: matplotlib<4,>=3.10; extra == "examples-viz"
Requires-Dist: seaborn<1,>=0.13; extra == "examples-viz"
Requires-Dist: plotly<7,>=6.6; extra == "examples-viz"
Provides-Extra: examples-nlp
Requires-Dist: textblob<1,>=0.19; extra == "examples-nlp"
Requires-Dist: spacy<4,>=3.8; extra == "examples-nlp"
Provides-Extra: examples-images
Requires-Dist: pillow<13,>=12.1; extra == "examples-images"
Provides-Extra: examples-ml
Requires-Dist: scikit-learn<2,>=1.8; extra == "examples-ml"
Requires-Dist: torch<3,>=2.10; extra == "examples-ml"
Provides-Extra: examples-geometry
Requires-Dist: shapely<3,>=2.1; extra == "examples-geometry"
Requires-Dist: scipy<2,>=1.17; extra == "examples-geometry"
Provides-Extra: examples-geospatial
Requires-Dist: geopy<3,>=2.4; extra == "examples-geospatial"
Requires-Dist: pyproj<4,>=3.7; extra == "examples-geospatial"
Requires-Dist: shapely<3,>=2.1; extra == "examples-geospatial"
Provides-Extra: examples-symbolic
Requires-Dist: sympy<2,>=1.14; extra == "examples-symbolic"
Requires-Dist: networkx<4,>=3.6; extra == "examples-symbolic"
Provides-Extra: examples-all
Requires-Dist: catnip-lang[examples-data]; extra == "examples-all"
Requires-Dist: catnip-lang[examples-files]; extra == "examples-all"
Requires-Dist: catnip-lang[examples-web]; extra == "examples-all"
Requires-Dist: catnip-lang[examples-viz]; extra == "examples-all"
Requires-Dist: catnip-lang[examples-nlp]; extra == "examples-all"
Requires-Dist: catnip-lang[examples-images]; extra == "examples-all"
Requires-Dist: catnip-lang[examples-ml]; extra == "examples-all"
Requires-Dist: catnip-lang[examples-geometry]; extra == "examples-all"
Requires-Dist: catnip-lang[examples-geospatial]; extra == "examples-all"
Requires-Dist: catnip-lang[examples-symbolic]; extra == "examples-all"
Requires-Dist: tqdm<5,>=4.67; extra == "examples-all"
Requires-Dist: cryptography<49,>=43; extra == "examples-all"
Dynamic: license-file

# Catnip language

Version <!-- catnip:version -->0.1.0<!-- /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
