persian-devkit
جعبهابزار خط فرمان برای توسعهدهندگان فارسیزبان — تاریخ، عدد، متن، UUID و JSON در یک CLI سریع و زیبا.
چرا persian-devkit؟
هر توسعهدهندهٔ ایرانی روزانه با کارهای تکراری مثل تبدیل تاریخ شمسی، اصلاح نیمفاصله، تبدیل اعداد فارسی، ساخت UUID و … سروکار دارد. pdev همهٔ این کارها را در یک دستور ساده و یکپارچه جمع میکند.
- سبک و سریع
- خروجی رنگی با Rich
- کار روی Linux، macOS و Windows
- تستشده با pytest (پوشش ۸۰٪+)
- پشتیبانی از stdin و pipe
- شلکامپلیشن برای bash و zsh
نصب
نسخهٔ فعلی: 1.0.0 — پایدار
شامل ۳۷ دستور و ۱۱۰+ زیرفرمان برای کارهای روزمره: تاریخ شمسی، متن فارسی، اعداد، JSON، YAML، TOML، CSV، URL، رنگ، QR Code، تصویر، دادههای نمونهٔ فارسی، و ابزارهای پروژه.
pip install persian-devkit
یا نصب توسعه:
git clone https://github.com/your-username/persian-devkit
cd persian-devkit
pip install -e ".[dev]"
شروع سریع
pdev --help
pdev date now
pdev number words 1234
echo "می روم" | pdev text halfspace
pdev uuid new --count 3
دستورات
🔐 pdev base64 — رمزگذاری و رمزگشایی
$ pdev base64 encode "hello world"
aGVsbG8gd29ybGQ=
$ pdev base64 decode "aGVsbG8gd29ybGQ="
hello world
$ echo "سلام" | pdev base64 encode
2LPZhNin2YU=
🧮 pdev hash — محاسبهٔ هش
$ pdev hash text "hello"
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
$ pdev hash text "hello" --algo md5
5d41402abc4b2a76b9719d911017c592
$ pdev hash file myfile.zip --algo sha512
...
$ pdev hash all "hello"
┏━━━━━━━━━ 🔐 هشها ━━━━━━━━━┓
┃ الگوریتم │ مقدار ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ md5 │ 5d41402a... │
│ sha1 │ aaf4c61d... │
│ sha256 │ 2cf24dba... │
│ ... │ ... │
└──────────┴────────────────┘
🔑 pdev password — تولید و سنجش رمز
$ pdev password new
k9$mN2#pQ8@xL4zW
$ pdev password new --length 32 --count 3
...
$ pdev password check "abc123"
┏━━━━━━━━ 🔒 قدرت رمز ━━━━━━━━┓
┃ شاخص │ مقدار ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
│ امتیاز │ 30/100 │
│ برچسب │ ضعیف │
│ آنتروپی │ 37.6 بیت │
└─────────┴──────────────────┘
🎲 pdev random — مقادیر تصادفی
$ pdev random int 1 100
42
$ pdev random str --length 16
aB3kL9mN2pQ8xY4z
$ pdev random choice a b c d
b
$ pdev random coin
شیر
$ pdev random dice --sides 20
17
$ pdev random nanoid
V1StGXR8_Z5jdHi6B-myT
✍️ pdev text — دستورات پیشرفتهٔ جدید
$ pdev text slug "سلام دنیا"
سلام-دنیا
$ pdev text slug "Hello, World! 2024" --max-length 15
hello-world-2024
$ pdev text case upper "hello world"
HELLO WORLD
$ pdev text case title "hello world"
Hello World
$ pdev text diff "line1\nline2" "line1\nline3"
- line2
+ line3
$ pdev text regex "\d+" "a1b22c333"
✓ مطابقت یافت شد.
تعداد: 3
• 1
• 22
• 333
🔗 pdev url — کار با URL
$ pdev url encode "سلام دنیا"
%D8%B3%D9%84%D8%A7%D9%85%20%D8%AF%D9%86%DB%8C%D8%A7
$ pdev url decode "%D8%B3%D9%84%D8%A7%D9%85"
سلام
$ pdev url parse "https://example.com:8080/path?x=1&y=2#frag"
┏━━━━━━━━ 🔗 URL ━━━━━━━━┓
┃ بخش │ مقدار ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━┩
│ scheme │ https │
│ netloc │ example.com:8080 │
│ host │ example.com │
│ port │ 8080 │
│ path │ /path │
│ query.x │ 1 │
│ query.y │ 2 │
│ fragment │ frag │
└──────────┴──────────────┘
$ pdev url build name=ali age=30
name=ali&age=30
⏱ pdev time — timestamp و مدت زمان
$ pdev time now
1737000000
$ pdev time from-unix 0
1970-01-01 00:00:00 UTC
$ pdev time to-unix "2024-01-01 12:00:00"
1704110400
$ pdev time duration "2h30m"
┏━━━━━━━━ ⏱ مدت زمان ━━━━━━━━┓
┃ شاخص │ مقدار ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
│ ثانیه │ 9,000 │
│ خوانا │ 2 ساعت و 30 دقیقه│
└─────────┴──────────────────┘
$ pdev time ago 1700000000
14 روز و 3 ساعت پیش
pdev date — تبدیل و محاسبهٔ تاریخ
$ pdev date to-jalali 2024-03-21
1403/01/02
$ pdev date to-gregorian 1403/01/02
2024-03-21
$ pdev date now
┏━━━━━━━━━ اکنون ━━━━━━━━━┓
┃ تقویم │ مقدار ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩
│ میلادی │ 2026-09-11 14:32:01│
│ شمسی │ 1405/06/20 14:32:01│
│ روز │جمعه │
└─────────┴────────────────────┘
$ pdev date diff 1402/01/01 1403/01/01
اختلاف: 365 روز
🎨 pdev color — کار با رنگها
$ pdev color convert "#ff0000"
┏━━━━━━━━━━━ 🎨 #ff0000 ━━━━━━━━━━┓
┃ فرمت │ مقدار ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ HEX │ #ff0000 │
│ RGB │ rgb(255, 0, 0) │
│ HSL │ hsl(0, 100%, 50%) │
│ روشنایی │ 50.0% │
│ نمایش │ ██████████ │
└──────────┴───────────────────────┘
$ pdev color palette "#ff8800" --count 5
$ pdev color random --pleasant --count 3
$ pdev color contrast "#000" "#fff"
نسبت کنتراست: 21.00:1
سطح WCAG: AAA ✓
$ pdev color complement "#ff0000"
📱 pdev qrcode — تولید QR Code
$ pdev qrcode "سلام دنیا"
▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄
█ ▄▄▄ █ █▄▀█ █ ▄▄▄ █
█ ███ █ ▄▀ ▀ █ ███ █
█▄▄▄▄▄█ ▀▄▀ █▄▄▄▄▄█
...
$ pdev qrcode "https://github.com" -o qr.png
✓ ذخیره شد: qr.png
$ pdev qrcode "متن فارسی" -e H --box-size 15 -o high.png
🖼 pdev image — اطلاعات و تبدیل تصویر
$ pdev image info photo.jpg
┏━━━━━━━━━━━ 🖼 photo.jpg ━━━━━━━━━━┓
┃ شاخص │ مقدار ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩
│ فرمت │ JPEG │
│ حالت رنگی │ RGB │
│ ابعاد │ 1920 × 1080 │
│ اندازه │ 245.3 KB │
└─────────────┴──────────────────────┘
$ pdev image resize photo.jpg 800
✓ ذخیره شد: photo_resized.jpg
$ pdev image convert photo.png photo.jpg --quality 85
✓ ذخیره شد: photo.jpg
pdev number — تبدیل و قالببندی اعداد
$ pdev number to-persian 1234567
۱۲۳۴۵۶۷
$ pdev number to-english ۱۲۳۴۵۶۷
1234567
$ pdev number format 1234567
1,234,567
$ pdev number words 1234
یک هزار و دویست و سی و چهار
pdev text — پاکسازی و پردازش متن
$ pdev text halfspace "می روم"
میروم
$ pdev text normalize "سلام دنيا"
سلام دنیا
$ pdev text reverse "سلام"
مالس
$ pdev text stats "یک متن نمونه"
┏━━━━━━━━━━ آمار متن ━━━━━━━━━━┓
┃ شاخص │ مقدار ┃
┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ کاراکترها │ 12 │
│ کاراکترهای غیرفاصله│ 10 │
│ کلمات │ 3 │
│ خطوط │ 1 │
│ جملات │ 1 │
└───────────────────┴─────────────┘
پشتیبانی از stdin:
$ echo "می روم" | pdev text halfspace
میروم
pdev uuid — تولید UUID
$ pdev uuid new
c4f9e78c-2b8a-4b8c-9d2f-3e8a1b5f6c7d
$ pdev uuid new --count 3
...
$ pdev uuid short
3q2_4rT9wZkA8bC1dE5fG7
pdev json — کار با JSON
$ pdev json pretty data.json
{
"name": "علی",
"age": 30
}
$ pdev json minify data.json
{"name":"علی","age":30}
$ pdev json validate data.json
✓ JSON معتبر است.
$ pdev json keys data.json
• name
• age
$ pdev json flatten nested.json
{
"user.name": "ali",
"user.tags[0]": "a",
"user.tags[1]": "b"
}
گزینههای سراسری
| گزینه | توضیح |
|---|---|
--version, -V |
نمایش نسخه |
--verbose, -v |
خروجی با جزئیات بیشتر |
--quiet, -q |
کاهش پیامهای اضافی |
--help |
راهنما |
Completion
پس از نصب، برای فعالسازی auto-completion:
# bash
pdev --install-completion bash && source ~/.bashrc
# zsh
pdev --install-completion zsh && source ~/.zshrc
# PowerShell (Windows)
pdev --install-completion powershell
توسعه
git clone https://github.com/your-username/persian-devkit
cd persian-devkit
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
ساختار پروژه:
persian-devkit/
├── src/
│ └── persian_devkit/
│ ├── init.py
│ ├── main.py
│ ├── cli.py
│ ├── commands/
│ │ ├── init.py
│ │ ├── date_cmd.py
│ │ ├── number_cmd.py
│ │ ├── text_cmd.py
│ │ ├── uuid_cmd.py
│ │ └── json_cmd.py
│ └── utils/
│ ├── init.py
│ ├── date_utils.py
│ ├── number_utils.py
│ └── text_utils.py
├── tests/
│ ├── test_date.py
│ ├── test_number.py
│ ├── test_text.py
│ ├── test_uuid.py
│ └── test_json.py
├── pyproject.toml
├── README.md
├── LICENSE
└── requirements.txt
انتشار در PyPI
آمادهسازی
pip install --upgrade build twine
بیلد
rm -rf dist/ build/ src/*.egg-info
python -m build
این دستور دو فایل در dist/ میسازد:
persian_devkit-0.1.0-py3-none-any.whlpersian_devkit-0.1.0.tar.gz
تست محلی
python -m twine check dist/*
pip install dist/*.whl
pdev --version
آپلود به TestPyPI (پیشنهادی)
python -m twine upload --repository testpypi dist/*
pip install -i https://test.pypi.org/simple/ persian-devkit
آپلود به PyPI
python -m twine upload dist/*
سپس هر کاربر میتواند با یک دستور نصب کند:
pip install persian-devkit
برای اطلاعات بیشتر دربارهٔ
~/.pypircو کلیدهای API، به مستندات رسمی PyPI مراجعه کن.
مجوز
MIT © 2026 — برای جزئیات LICENSE را ببین.
نکتهٔ کاربران ویندوز
برای پشتیبانی کامل از متن فارسی در CMD، ابتدا در ترمینال خود این را اجرا کنید:
chcp 65001
یا از PowerShell استفاده کنید که بهطور پیشفرض UTF-8 است:
"می روم" | pdev text halfspace
pdev yaml / pdev toml / pdev csv / pdev env
تبدیل و اعتبارسنجی دادههای ساختاریافته:
$ pdev yaml to-json config.yaml
$ pdev yaml from-json data.json -o config.yaml
$ pdev toml to-json pyproject.toml
$ pdev csv show data.csv
$ pdev csv to-json data.csv
$ pdev csv filter data.csv age "^3" --ignore-case
$ pdev env show .env # مقادیر حساس مخفی
$ pdev env to-shell .env # export KEY=...
$ pdev env sort .env -o .env.sorted
🔍 pdev jq — کوئری JSON (جایگزین سادهٔ jq)
$ echo '{"user": {"name": "علی", "age": 30}}' | pdev jq .user.name -r
علی
$ pdev jq .items[0] -f data.json
$ pdev jq '.items[*].name' -f data.json -r
$ pdev jq '.config.database.host' -f config.json -r
$ pdev jq '["key with space"]' -f d.json
مسیرهای پشتیبانیشده:
.key→ دسترسی به کلید.a.b.c→ تودرتو.items[0]→ اندیس آرایه.items[*]→ همهٔ عناصر["key with space"]→ کلید با کاراکتر خاص
pdev lorem — متن نمونهٔ فارسی
$ pdev lorem sentence
زبان فارسی گنجینهای از ادبیات و فرهنگ است.
$ pdev lorem paragraph -s 3
...
$ pdev lorem words -c 6
$ pdev lorem all -p 3 -s 4
pdev name — نام و دادهٔ نمونهٔ فارسی
$ pdev name full
علی احمدی
$ pdev name full -g female -c 3
سارا رضایی
مریم حسینی
فاطمه محمدی
$ pdev name email
ali.ahmadi42@example.com
$ pdev name profile -c 3 -j
[
{"name": "علی احمدی", "email": "...", "city": "تهران"},
...
]
pdev license — تولید لایسنس
$ pdev license list
$ pdev license show MIT -a "علی رضایی" -y 2024
$ pdev license new Apache-2.0 -a "Sara" -o LICENSE
pdev gitignore — تولید .gitignore
$ pdev gitignore list
$ pdev gitignore show python
$ pdev gitignore new python node macos -o .gitignore
$ pdev gitignore new rust --append
pdev scaffold — ساخت پروژه از قالب
$ pdev scaffold python myproject
✓ پروژه ساخته شد: /home/user/myproject
• README.md
• pyproject.toml
• src/myproject/main.py
• tests/test_main.py
$ pdev scaffold node myapp --target ./projects
$ pdev scaffold minimal hello
pdev template — رندر قالب متنی
$ echo "سلام {{name}} از {{city}}" > greet.txt
$ pdev template greet.txt -D name=علی -D city=تهران
سلام علی از تهران
$ pdev template vars greet.txt
متغیرهای یافتشده (2):
• name
• city
$ pdev template config.tpl -D port=8080 -o config.yaml
Metadata
Release files for persian-devkit 1.3.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 | |
|---|---|---|---|
| persian_devkit-1.3.0.tar.gz | 73.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| persian_devkit-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 167.9 kB
Release files / persian_devkit-1.3.0.tar.gz
| Download URL | persian_devkit-1.3.0.tar.gz |
|---|---|
| Size | 73.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5ace0fc14f75b59c7fc5f8c1c5c6dbcf8c85db82b77fa37f18d264cf59d6bce4
|
|
BLAKE2b-256 checksum How to use checksums |
5ad8aea6f8c2b10df74c884e3134dc3581e8108e626821be1c7b9b7364a71865
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Release files / persian_devkit-1.3.0-py3-none-any.whl
| Download URL | persian_devkit-1.3.0-py3-none-any.whl |
|---|---|
| Size | 94.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7d5233ee0e02b0afd4b20e9d1ce6f192f7c8b62b5205a1b4899e94723f8470c0
|
|
BLAKE2b-256 checksum How to use checksums |
c5a2cf4ed76f88b46343de678efa516d9d3cf7c3754cf6c8f2ce29583f8fb16a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|