Wisal (وصال)
A bilingual (Arabic/English) CLI tool to convert data between JSON, CSV, and YAML.
Why Wisal?
Most data conversion tools (jc, Miller, dasel...) are excellent but entirely English: error messages, warnings, even documentation. This creates a real barrier for thousands of Arabic-speaking developers, especially when debugging complex data.
Wisal is a small, focused tool that solves exactly this problem:
- 🌐 Every message (error, warning, help) is available in Arabic and English, auto-detected from the system locale (defaults to English)
- 🔢 Detects and handles Arabic-Indic digits (٠-٩) mixed with Latin digits in the same data
- 🔤 Detects common encoding issues (Windows-1256 vs UTF-8) that corrupt Arabic text
- ✅ Validates data quality before converting (mixed types, nested fields) instead of silently failing
- 📦 No bloat: one tool, one command, predictable behavior
Installation
pip install wisal-cli
Or from source:
git clone https://github.com/amgdsaleh66/wisal.git
cd wisal
pip install -e .
Usage
# Simple conversion
wisal convert data.json data.csv
# Force Arabic messages
wisal convert data.json data.csv --lang ar
# Flatten nested fields when converting to CSV
wisal convert data.json data.csv --flatten
# Normalize Arabic-Indic digits to Latin
wisal convert data.json data.csv --normalize-digits
# Preview output without saving
wisal convert data.json data.csv --dry-run
Run wisal --help or wisal convert --help for the full list of options.
Example
input.json:
[
{"name": "Ahmad", "age": "٣٠", "city": "Riyadh"},
{"name": "Sara", "age": 25, "city": "Dubai"}
]
wisal convert input.json output.csv --normalize-digits
⚠ Warning: Column 'age' has mixed data types (e.g. numbers and text together) in rows: 1, 2.
Successfully converted 'input.json' to 'output.csv'. (2 rows/items)
Supported Formats
| From \ To | JSON | CSV | YAML |
|---|---|---|---|
| JSON | — | ✅ | ✅ |
| CSV | ✅ | — | ✅ |
| YAML | ✅ | ✅ | — |
Contributing
Contributions welcome! Open an issue or pull request.
pip install -e ".[dev]"
pytest tests/
See CONTRIBUTING.md for details.
License
MIT
Metadata
Release files for wisal-cli 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wisal_cli-0.1.0.tar.gz | 11.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wisal_cli-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.4 kB
Release files / wisal_cli-0.1.0.tar.gz
| Download URL | wisal_cli-0.1.0.tar.gz |
|---|---|
| Size | 11.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bfdda2e63193b6722d1fb176b3c59dee5c4b80e90f2bbd81dcfa618dec65ef21
|
|
BLAKE2b-256 checksum How to use checksums |
f113a1dde8fd7c9253c2846bdb20ef6f07d4e90056e64b71b4da8d1062315c98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / wisal_cli-0.1.0-py3-none-any.whl
| Download URL | wisal_cli-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f328a7a41a45fa395b12f4ab01928b09a77ad1d70623c48e9de529bf3fea00ef
|
|
BLAKE2b-256 checksum How to use checksums |
fb6487e6ab87b9045bfccf06206a5d480125566c804c0f0f31d50e8ba75e2a02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|