Skip to main content

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)

Source distribution for wisal-cli 0.1.0
File Size Uploaded
wisal_cli-0.1.0.tar.gz 11.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wisal-cli 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page