Metadata-Version: 2.4
Name: acl_to_parquet
Version: 0.1.1
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Rust
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Summary: Convertisseur Rust de tables ACL Audit Command Language (.FIL) vers Parquet
Requires-Python: >=3.13
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM

# acl_to_parquet — bindings Python

Bindings Python d'un convertisseur Rust haute performance pour les tables
ACL Audit Command Language (`.FIL`) vers Parquet.

Pour la documentation complète du projet (format ACL géré, conventions de
nommage, options du CLI Rust), voir le [dépôt principal](https://github.com/).

## Installation

```bash
pip install acl_to_parquet
```

Nécessite Python 3.13 ou supérieur.

## Usage

### Conversion d'un fichier

```python
from acl_to_parquet import convert

report = convert(
    data_path="data/clients.FIL",
    schema_path="schemas/clients.layout",
    output_path="output/clients.parquet",
)
print(report)
# ConversionReport(rows_written=1234567, n_fields=42, total_seconds=3.21)

print(f"{report.rows_written:,} lignes écrites")
print(f"Anomalies par colonne : {report.anomalies_per_column}")
```

### Conversion d'un dossier entier en parallèle

```python
from acl_to_parquet import convert_directory

summary = convert_directory(
    input_dir="data/",
    schema_dir="schemas/",
    output_dir="output/",
    jobs=4,           # None = nombre de cœurs CPU
    verbose=True,     # affiche la progression sur stderr
)

print(summary)
# BatchSummary(n_success=12, n_failure=0, total_rows_written=98765432)

for outcome in summary.outcomes:
    if outcome.success:
        print(f"OK   {outcome.data_path} → {outcome.output_path}")
    else:
        print(f"FAIL {outcome.data_path} : {outcome.error}")
```

### Convention de nommage attendue par `convert_directory`

Pour chaque fichier `<nom>.FIL` dans `input_dir`, le module cherche
`<nom>.layout` dans `schema_dir` et produit `<nom>.parquet` dans
`output_dir`. Les fichiers sans schéma associé apparaissent comme des
échecs dans le résumé, sans interrompre le batch.

## Options de conversion

Les fonctions `convert()` et `convert_directory()` acceptent les
paramètres optionnels suivants :

| Paramètre         | Défaut    | Description |
|-------------------|-----------|-------------|
| `chunk_rows`      | 65 536    | Nombre de lignes par batch en mémoire |
| `row_group_size`  | 1 048 576 | Lignes par row group Parquet |
| `compression`     | `"snappy"`| `"snappy"` \| `"zstd"` \| `"none"` |
| `jobs`            | `None`    | Workers parallèles (batch uniquement) |
| `verbose`         | `False`   | Logs de progression (batch uniquement) |

