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.5.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.5.0
File Size Uploaded
persian_devkit-1.5.0.tar.gz 78.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for persian-devkit 1.5.0
File Interpreter ABI Platform
persian_devkit-1.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 180.2 kB

Release files / persian_devkit-1.5.0.tar.gz

Download URL persian_devkit-1.5.0.tar.gz
Size 78.3 kB
Tags Source
SHA-256 checksum
How to use checksums
fff8ecaeabd7368590405462203a0db242c219ca4f3239a0f4e54f892eabdec4
BLAKE2b-256 checksum
How to use checksums
a418551ffaa2c915c1436adb7a9cac4272e0ff38804cd01f28b3ffbe65917a52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / persian_devkit-1.5.0-py3-none-any.whl

Download URL persian_devkit-1.5.0-py3-none-any.whl
Size 101.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b780111ab09b89c7c698c408ddcbf916ef471f0b999676689c66351dd485cd0
BLAKE2b-256 checksum
How to use checksums
244880072b7ee7c30575d178636eceaa88b03f39ba8f54f095b01157efe9c5ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

This release

1.5.0 This release

2 release files

1.4.0

2 release files

1.3.0

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