Skip to main content

persian-devkit

جعبه‌ابزار خط فرمان برای توسعه‌دهندگان فارسی‌زبان — تاریخ، عدد، متن، UUID و JSON در یک CLI سریع و زیبا.

PyPI Python License: MIT Version Tests Coverage

چرا persian-devkit؟

هر توسعه‌دهندهٔ ایرانی روزانه با کارهای تکراری مثل تبدیل تاریخ شمسی، اصلاح نیم‌فاصله، تبدیل اعداد فارسی، ساخت UUID و … سروکار دارد. pdev همهٔ این کارها را در یک دستور ساده و یکپارچه جمع می‌کند.

  • سبک و سریع
  • خروجی رنگی با Rich
  • کار روی Linux، macOS و Windows
  • تست‌شده با pytest (پوشش ۸۰٪+)
  • پشتیبانی از stdin و pipe
  • شل‌کامپلیشن برای bash و zsh

PyPI Python License: MIT CI GitHub stars

نصب

نسخهٔ فعلی: 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.whl
  • persian_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)

Source distribution for persian-devkit 1.3.0
File Size Uploaded
persian_devkit-1.3.0.tar.gz 73.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for persian-devkit 1.3.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

2.1.0

2 release files

2.0.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

This release

1.3.0 This release

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

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