persian-devkit 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. persian_devkit-1.0.0/LICENSE.txt +21 -0
  2. persian_devkit-1.0.0/PKG-INFO +702 -0
  3. persian_devkit-1.0.0/README.md +661 -0
  4. persian_devkit-1.0.0/persian_devkit/__init__.py +4 -0
  5. persian_devkit-1.0.0/persian_devkit/__main__.py +5 -0
  6. persian_devkit-1.0.0/persian_devkit/cli.py +55 -0
  7. persian_devkit-1.0.0/persian_devkit/commands/__init__.py +16 -0
  8. persian_devkit-1.0.0/persian_devkit/commands/base64_cmd.py +51 -0
  9. persian_devkit-1.0.0/persian_devkit/commands/color_cmd.py +143 -0
  10. persian_devkit-1.0.0/persian_devkit/commands/csv_cmd.py +121 -0
  11. persian_devkit-1.0.0/persian_devkit/commands/date_cmd.py +98 -0
  12. persian_devkit-1.0.0/persian_devkit/commands/env_cmd.py +100 -0
  13. persian_devkit-1.0.0/persian_devkit/commands/gitignore_cmd.py +68 -0
  14. persian_devkit-1.0.0/persian_devkit/commands/hash_cmd.py +71 -0
  15. persian_devkit-1.0.0/persian_devkit/commands/image_cmd.py +88 -0
  16. persian_devkit-1.0.0/persian_devkit/commands/jq_cmd.py +92 -0
  17. persian_devkit-1.0.0/persian_devkit/commands/json_cmd.py +135 -0
  18. persian_devkit-1.0.0/persian_devkit/commands/license_cmd.py +67 -0
  19. persian_devkit-1.0.0/persian_devkit/commands/lorem_cmd.py +53 -0
  20. persian_devkit-1.0.0/persian_devkit/commands/name_cmd.py +98 -0
  21. persian_devkit-1.0.0/persian_devkit/commands/number_cmd.py +65 -0
  22. persian_devkit-1.0.0/persian_devkit/commands/password_cmd.py +55 -0
  23. persian_devkit-1.0.0/persian_devkit/commands/qrcode_cmd.py +46 -0
  24. persian_devkit-1.0.0/persian_devkit/commands/random_cmd.py +110 -0
  25. persian_devkit-1.0.0/persian_devkit/commands/scaffold_cmd.py +155 -0
  26. persian_devkit-1.0.0/persian_devkit/commands/template_cmd.py +87 -0
  27. persian_devkit-1.0.0/persian_devkit/commands/text_cmd.py +157 -0
  28. persian_devkit-1.0.0/persian_devkit/commands/time_cmd.py +96 -0
  29. persian_devkit-1.0.0/persian_devkit/commands/toml_cmd.py +85 -0
  30. persian_devkit-1.0.0/persian_devkit/commands/url_cmd.py +102 -0
  31. persian_devkit-1.0.0/persian_devkit/commands/uuid_cmd.py +45 -0
  32. persian_devkit-1.0.0/persian_devkit/commands/yaml_cmd.py +94 -0
  33. persian_devkit-1.0.0/persian_devkit/main.py +63 -0
  34. persian_devkit-1.0.0/persian_devkit/py.typed +0 -0
  35. persian_devkit-1.0.0/persian_devkit/utils/__init__.py +1 -0
  36. persian_devkit-1.0.0/persian_devkit/utils/color_utils.py +112 -0
  37. persian_devkit-1.0.0/persian_devkit/utils/crypto_utils.py +157 -0
  38. persian_devkit-1.0.0/persian_devkit/utils/data_utils.py +146 -0
  39. persian_devkit-1.0.0/persian_devkit/utils/date_utils.py +58 -0
  40. persian_devkit-1.0.0/persian_devkit/utils/fake_utils.py +144 -0
  41. persian_devkit-1.0.0/persian_devkit/utils/gitignore_data.py +211 -0
  42. persian_devkit-1.0.0/persian_devkit/utils/image_utils.py +37 -0
  43. persian_devkit-1.0.0/persian_devkit/utils/jsonpath_utils.py +94 -0
  44. persian_devkit-1.0.0/persian_devkit/utils/license_data.py +190 -0
  45. persian_devkit-1.0.0/persian_devkit/utils/number_utils.py +78 -0
  46. persian_devkit-1.0.0/persian_devkit/utils/qrcode_utils.py +84 -0
  47. persian_devkit-1.0.0/persian_devkit/utils/text_utils.py +166 -0
  48. persian_devkit-1.0.0/persian_devkit/utils/time_utils.py +81 -0
  49. persian_devkit-1.0.0/persian_devkit/utils/url_utils.py +54 -0
  50. persian_devkit-1.0.0/pyproject.toml +85 -0
  51. persian_devkit-1.0.0/tests/__init__.py +0 -0
  52. persian_devkit-1.0.0/tests/test_cli.py +278 -0
  53. persian_devkit-1.0.0/tests/test_color_qr_image.py +296 -0
  54. persian_devkit-1.0.0/tests/test_crypto.py +123 -0
  55. persian_devkit-1.0.0/tests/test_data.py +299 -0
  56. persian_devkit-1.0.0/tests/test_date.py +65 -0
  57. persian_devkit-1.0.0/tests/test_fake_jq.py +237 -0
  58. persian_devkit-1.0.0/tests/test_json.py +81 -0
  59. persian_devkit-1.0.0/tests/test_new_cmds.py +151 -0
  60. persian_devkit-1.0.0/tests/test_number.py +63 -0
  61. persian_devkit-1.0.0/tests/test_project.py +295 -0
  62. persian_devkit-1.0.0/tests/test_text.py +63 -0
  63. persian_devkit-1.0.0/tests/test_url_time.py +278 -0
  64. persian_devkit-1.0.0/tests/test_uuid.py +24 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 sobhan Osman zadeh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,702 @@
1
+ Metadata-Version: 2.5
2
+ Name: persian-devkit
3
+ Version: 1.0.0
4
+ Summary: جعبه‌ابزار خط فرمان برای توسعه‌دهندگان فارسی‌زبان (تاریخ، عدد، متن، UUID، JSON)
5
+ Project-URL: Homepage, https://github.com/your-username/persian-devkit
6
+ Project-URL: Repository, https://github.com/your-username/persian-devkit
7
+ Project-URL: Issues, https://github.com/your-username/persian-devkit/issues
8
+ Project-URL: Changelog, https://github.com/your-username/persian-devkit/blob/main/CHANGELOG.md
9
+ Author-email: sobhan osman zadeh <sobhanosmanzadeh1@gmail.com>
10
+ License: MIT
11
+ License-File: LICENSE.txt
12
+ Keywords: cli,developer-tools,devkit,farsi,jalali,persian,shamsi
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Natural Language :: Persian
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Classifier: Topic :: Utilities
25
+ Requires-Python: >=3.10
26
+ Requires-Dist: jdatetime>=4.1.0
27
+ Requires-Dist: pillow>=10.0.0
28
+ Requires-Dist: python-bidi>=0.4.2
29
+ Requires-Dist: pyyaml>=6.0.1
30
+ Requires-Dist: qrcode>=7.4.2
31
+ Requires-Dist: rich>=13.7.0
32
+ Requires-Dist: tomli-w>=1.0.0
33
+ Requires-Dist: tomli>=2.0.1; python_version < '3.11'
34
+ Requires-Dist: typer>=0.12.0
35
+ Provides-Extra: dev
36
+ Requires-Dist: build>=1.2; extra == 'dev'
37
+ Requires-Dist: pytest-cov>=5.0; extra == 'dev'
38
+ Requires-Dist: pytest>=8.0; extra == 'dev'
39
+ Requires-Dist: twine>=5.1; extra == 'dev'
40
+ Description-Content-Type: text/markdown
41
+
42
+ # persian-devkit
43
+
44
+ > جعبه‌ابزار خط فرمان برای توسعه‌دهندگان فارسی‌زبان — تاریخ، عدد، متن، UUID و JSON در یک CLI سریع و زیبا.
45
+
46
+ [![PyPI](https://img.shields.io/badge/pypi-persian--devkit-blue)](https://pypi.org/project/persian-devkit/)
47
+ [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/)
48
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
49
+ ![Version](https://img.shields.io/badge/version-1.0.0-blue)
50
+ ![Tests](https://img.shields.io/badge/tests-319%20passing-brightgreen)
51
+ ![Coverage](https://img.shields.io/badge/coverage-91%25-brightgreen)
52
+ ---
53
+
54
+ ## چرا persian-devkit؟
55
+
56
+ هر توسعه‌دهندهٔ ایرانی روزانه با کارهای تکراری مثل تبدیل تاریخ شمسی، اصلاح نیم‌فاصله، تبدیل اعداد فارسی، ساخت UUID و … سروکار دارد. **pdev** همهٔ این کارها را در یک دستور ساده و یکپارچه جمع می‌کند.
57
+
58
+ - سبک و سریع
59
+ - خروجی رنگی با Rich
60
+ - کار روی Linux، macOS و Windows
61
+ - تست‌شده با pytest (پوشش ۸۰٪+)
62
+ - پشتیبانی از stdin و pipe
63
+ - شل‌کامپلیشن برای bash و zsh
64
+
65
+ ---
66
+
67
+ ## نصب
68
+
69
+ **نسخهٔ فعلی:** 1.0.0 — پایدار
70
+
71
+ شامل **۳۷ دستور** و **۱۱۰+ زیرفرمان** برای کارهای روزمره:
72
+ تاریخ شمسی، متن فارسی، اعداد، JSON، YAML، TOML، CSV، URL، رنگ،
73
+ QR Code، تصویر، داده‌های نمونهٔ فارسی، و ابزارهای پروژه.
74
+
75
+ ```bash
76
+ pip install persian-devkit
77
+ ```
78
+
79
+ یا نصب توسعه:
80
+
81
+ ```bash
82
+ git clone https://github.com/your-username/persian-devkit
83
+ cd persian-devkit
84
+ pip install -e ".[dev]"
85
+ ```
86
+
87
+ ---
88
+
89
+ ## شروع سریع
90
+
91
+ ```bash
92
+ pdev --help
93
+ pdev date now
94
+ pdev number words 1234
95
+ echo "می روم" | pdev text halfspace
96
+ pdev uuid new --count 3
97
+ ```
98
+
99
+ ---
100
+
101
+ ## دستورات
102
+
103
+
104
+ ### 🔐 `pdev base64` — رمزگذاری و رمزگشایی
105
+
106
+ ```bash
107
+ $ pdev base64 encode "hello world"
108
+ aGVsbG8gd29ybGQ=
109
+
110
+ $ pdev base64 decode "aGVsbG8gd29ybGQ="
111
+ hello world
112
+
113
+ $ echo "سلام" | pdev base64 encode
114
+ 2LPZhNin2YU=
115
+ ```
116
+
117
+ ### 🧮 `pdev hash` — محاسبهٔ هش
118
+
119
+ ```bash
120
+ $ pdev hash text "hello"
121
+ 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
122
+
123
+ $ pdev hash text "hello" --algo md5
124
+ 5d41402abc4b2a76b9719d911017c592
125
+
126
+ $ pdev hash file myfile.zip --algo sha512
127
+ ...
128
+
129
+ $ pdev hash all "hello"
130
+ ┏━━━━━━━━━ 🔐 هش‌ها ━━━━━━━━━┓
131
+ ┃ الگوریتم │ مقدار ┃
132
+ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━┩
133
+ │ md5 │ 5d41402a... │
134
+ │ sha1 │ aaf4c61d... │
135
+ │ sha256 │ 2cf24dba... │
136
+ │ ... │ ... │
137
+ └──────────┴────────────────┘
138
+ ```
139
+
140
+ ### 🔑 `pdev password` — تولید و سنجش رمز
141
+
142
+ ```bash
143
+ $ pdev password new
144
+ k9$mN2#pQ8@xL4zW
145
+
146
+ $ pdev password new --length 32 --count 3
147
+ ...
148
+
149
+ $ pdev password check "abc123"
150
+ ┏━━━━━━━━ 🔒 قدرت رمز ━━━━━━━━┓
151
+ ┃ شاخص │ مقدار ┃
152
+ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
153
+ │ امتیاز │ 30/100 │
154
+ │ برچسب │ ضعیف │
155
+ │ آنتروپی │ 37.6 بیت │
156
+ └─────────┴──────────────────┘
157
+ ```
158
+
159
+ ### 🎲 `pdev random` — مقادیر تصادفی
160
+
161
+ ```bash
162
+ $ pdev random int 1 100
163
+ 42
164
+
165
+ $ pdev random str --length 16
166
+ aB3kL9mN2pQ8xY4z
167
+
168
+ $ pdev random choice a b c d
169
+ b
170
+
171
+ $ pdev random coin
172
+ شیر
173
+
174
+ $ pdev random dice --sides 20
175
+ 17
176
+
177
+ $ pdev random nanoid
178
+ V1StGXR8_Z5jdHi6B-myT
179
+ ```
180
+
181
+ ### ✍️ `pdev text` — دستورات پیشرفتهٔ جدید
182
+
183
+ ```bash
184
+ $ pdev text slug "سلام دنیا"
185
+ سلام-دنیا
186
+
187
+ $ pdev text slug "Hello, World! 2024" --max-length 15
188
+ hello-world-2024
189
+
190
+ $ pdev text case upper "hello world"
191
+ HELLO WORLD
192
+
193
+ $ pdev text case title "hello world"
194
+ Hello World
195
+
196
+ $ pdev text diff "line1\nline2" "line1\nline3"
197
+ - line2
198
+ + line3
199
+
200
+ $ pdev text regex "\d+" "a1b22c333"
201
+ ✓ مطابقت یافت شد.
202
+ تعداد: 3
203
+ • 1
204
+ • 22
205
+ • 333
206
+ ```
207
+
208
+ ### 🔗 `pdev url` — کار با URL
209
+
210
+ ```bash
211
+ $ pdev url encode "سلام دنیا"
212
+ %D8%B3%D9%84%D8%A7%D9%85%20%D8%AF%D9%86%DB%8C%D8%A7
213
+
214
+ $ pdev url decode "%D8%B3%D9%84%D8%A7%D9%85"
215
+ سلام
216
+
217
+ $ pdev url parse "https://example.com:8080/path?x=1&y=2#frag"
218
+ ┏━━━━━━━━ 🔗 URL ━━━━━━━━┓
219
+ ┃ بخش │ مقدار ┃
220
+ ┡━━━━━━━━━╇━━━━━━━━━━━━━┩
221
+ │ scheme │ https │
222
+ │ netloc │ example.com:8080 │
223
+ │ host │ example.com │
224
+ │ port │ 8080 │
225
+ │ path │ /path │
226
+ │ query.x │ 1 │
227
+ │ query.y │ 2 │
228
+ │ fragment │ frag │
229
+ └──────────┴──────────────┘
230
+
231
+ $ pdev url build name=ali age=30
232
+ name=ali&age=30
233
+ ```
234
+
235
+ ### ⏱ `pdev time` — timestamp و مدت زمان
236
+
237
+ ```bash
238
+ $ pdev time now
239
+ 1737000000
240
+
241
+ $ pdev time from-unix 0
242
+ 1970-01-01 00:00:00 UTC
243
+
244
+ $ pdev time to-unix "2024-01-01 12:00:00"
245
+ 1704110400
246
+
247
+ $ pdev time duration "2h30m"
248
+ ┏━━━━━━━━ ⏱ مدت زمان ━━━━━━━━┓
249
+ ┃ شاخص │ مقدار ┃
250
+ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
251
+ │ ثانیه │ 9,000 │
252
+ │ خوانا │ 2 ساعت و 30 دقیقه│
253
+ └─────────┴──────────────────┘
254
+
255
+ $ pdev time ago 1700000000
256
+ 14 روز و 3 ساعت پیش
257
+ ```
258
+
259
+
260
+
261
+
262
+ ### `pdev date` — تبدیل و محاسبهٔ تاریخ
263
+
264
+ ```bash
265
+ $ pdev date to-jalali 2024-03-21
266
+ 1403/01/02
267
+
268
+ $ pdev date to-gregorian 1403/01/02
269
+ 2024-03-21
270
+
271
+ $ pdev date now
272
+ ┏━━━━━━━━━ اکنون ━━━━━━━━━┓
273
+ ┃ تقویم │ مقدار ┃
274
+ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩
275
+ │ میلادی │ 2026-09-11 14:32:01│
276
+ │ شمسی │ 1405/06/20 14:32:01│
277
+ │ روز │جمعه │
278
+ └─────────┴────────────────────┘
279
+
280
+ $ pdev date diff 1402/01/01 1403/01/01
281
+ اختلاف: 365 روز
282
+ ```
283
+
284
+ ### 🎨 `pdev color` — کار با رنگ‌ها
285
+
286
+ ```bash
287
+ $ pdev color convert "#ff0000"
288
+ ┏━━━━━━━━━━━ 🎨 #ff0000 ━━━━━━━━━━┓
289
+ ┃ فرمت │ مقدار ┃
290
+ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
291
+ │ HEX │ #ff0000 │
292
+ │ RGB │ rgb(255, 0, 0) │
293
+ │ HSL │ hsl(0, 100%, 50%) │
294
+ │ روشنایی │ 50.0% │
295
+ │ نمایش │ ██████████ │
296
+ └──────────┴───────────────────────┘
297
+
298
+ $ pdev color palette "#ff8800" --count 5
299
+ $ pdev color random --pleasant --count 3
300
+ $ pdev color contrast "#000" "#fff"
301
+ نسبت کنتراست: 21.00:1
302
+ سطح WCAG: AAA ✓
303
+ $ pdev color complement "#ff0000"
304
+ ```
305
+
306
+ ### 📱 `pdev qrcode` — تولید QR Code
307
+
308
+ ```bash
309
+ $ pdev qrcode "سلام دنیا"
310
+ ▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄
311
+ █ ▄▄▄ █ █▄▀█ █ ▄▄▄ █
312
+ █ ███ █ ▄▀ ▀ █ ███ █
313
+ █▄▄▄▄▄█ ▀▄▀ █▄▄▄▄▄█
314
+ ...
315
+
316
+ $ pdev qrcode "https://github.com" -o qr.png
317
+ ✓ ذخیره شد: qr.png
318
+
319
+ $ pdev qrcode "متن فارسی" -e H --box-size 15 -o high.png
320
+ ```
321
+
322
+ ### 🖼 `pdev image` — اطلاعات و تبدیل تصویر
323
+
324
+ ```bash
325
+ $ pdev image info photo.jpg
326
+ ┏━━━━━━━━━━━ 🖼 photo.jpg ━━━━━━━━━━┓
327
+ ┃ شاخص │ مقدار ┃
328
+ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩
329
+ │ فرمت │ JPEG │
330
+ │ حالت رنگی │ RGB │
331
+ │ ابعاد │ 1920 × 1080 │
332
+ │ اندازه │ 245.3 KB │
333
+ └─────────────┴──────────────────────┘
334
+
335
+ $ pdev image resize photo.jpg 800
336
+ ✓ ذخیره شد: photo_resized.jpg
337
+
338
+ $ pdev image convert photo.png photo.jpg --quality 85
339
+ ✓ ذخیره شد: photo.jpg
340
+ ```
341
+
342
+ ### `pdev number` — تبدیل و قالب‌بندی اعداد
343
+
344
+
345
+ ```bash
346
+ $ pdev number to-persian 1234567
347
+ ۱۲۳۴۵۶۷
348
+
349
+ $ pdev number to-english ۱۲۳۴۵۶۷
350
+ 1234567
351
+
352
+ $ pdev number format 1234567
353
+ 1,234,567
354
+
355
+ $ pdev number words 1234
356
+ یک هزار و دویست و سی و چهار
357
+ ```
358
+
359
+ ### `pdev text` — پاک‌سازی و پردازش متن
360
+
361
+ ```bash
362
+ $ pdev text halfspace "می روم"
363
+ می‌روم
364
+
365
+ $ pdev text normalize "سلام دنيا"
366
+ سلام دنیا
367
+
368
+ $ pdev text reverse "سلام"
369
+ مالس
370
+
371
+ $ pdev text stats "یک متن نمونه"
372
+ ┏━━━━━━━━━━ آمار متن ━━━━━━━━━━┓
373
+ ┃ شاخص │ مقدار ┃
374
+ ┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
375
+ │ کاراکترها │ 12 │
376
+ │ کاراکترهای غیرفاصله│ 10 │
377
+ │ کلمات │ 3 │
378
+ │ خطوط │ 1 │
379
+ │ جملات │ 1 │
380
+ └───────────────────┴─────────────┘
381
+ ```
382
+
383
+ پشتیبانی از stdin:
384
+
385
+ ```bash
386
+ $ echo "می روم" | pdev text halfspace
387
+ می‌روم
388
+ ```
389
+
390
+ ### `pdev uuid` — تولید UUID
391
+
392
+ ```bash
393
+ $ pdev uuid new
394
+ c4f9e78c-2b8a-4b8c-9d2f-3e8a1b5f6c7d
395
+
396
+ $ pdev uuid new --count 3
397
+ ...
398
+
399
+ $ pdev uuid short
400
+ 3q2_4rT9wZkA8bC1dE5fG7
401
+ ```
402
+
403
+ ### `pdev json` — کار با JSON
404
+
405
+ ```bash
406
+ $ pdev json pretty data.json
407
+ {
408
+ "name": "علی",
409
+ "age": 30
410
+ }
411
+
412
+ $ pdev json minify data.json
413
+ {"name":"علی","age":30}
414
+
415
+ $ pdev json validate data.json
416
+ ✓ JSON معتبر است.
417
+
418
+ $ pdev json keys data.json
419
+ • name
420
+ • age
421
+
422
+ $ pdev json flatten nested.json
423
+ {
424
+ "user.name": "ali",
425
+ "user.tags[0]": "a",
426
+ "user.tags[1]": "b"
427
+ }
428
+ ```
429
+
430
+ ---
431
+
432
+ ## گزینه‌های سراسری
433
+
434
+ | گزینه | توضیح |
435
+ |-------|-------|
436
+ | `--version`, `-V` | نمایش نسخه |
437
+ | `--verbose`, `-v` | خروجی با جزئیات بیشتر |
438
+ | `--quiet`, `-q` | کاهش پیام‌های اضافی |
439
+ | `--help` | راهنما |
440
+
441
+ ---
442
+
443
+ ## Completion
444
+
445
+ پس از نصب، برای فعال‌سازی auto-completion:
446
+
447
+ ```bash
448
+ # bash
449
+ pdev --install-completion bash && source ~/.bashrc
450
+
451
+ # zsh
452
+ pdev --install-completion zsh && source ~/.zshrc
453
+
454
+ # PowerShell (Windows)
455
+ pdev --install-completion powershell
456
+ ```
457
+
458
+ ---
459
+
460
+ ## توسعه
461
+
462
+ ```bash
463
+ git clone https://github.com/your-username/persian-devkit
464
+ cd persian-devkit
465
+ python -m venv .venv && source .venv/bin/activate
466
+ pip install -e ".[dev]"
467
+ pytest
468
+ ```
469
+
470
+ ساختار پروژه:
471
+
472
+ ```
473
+ persian-devkit/
474
+ ├── src/
475
+ │ └── persian_devkit/
476
+ │ ├── init.py
477
+ │ ├── main.py
478
+ │ ├── cli.py
479
+ │ ├── commands/
480
+ │ │ ├── init.py
481
+ │ │ ├── date_cmd.py
482
+ │ │ ├── number_cmd.py
483
+ │ │ ├── text_cmd.py
484
+ │ │ ├── uuid_cmd.py
485
+ │ │ └── json_cmd.py
486
+ │ └── utils/
487
+ │ ├── init.py
488
+ │ ├── date_utils.py
489
+ │ ├── number_utils.py
490
+ │ └── text_utils.py
491
+ ├── tests/
492
+ │ ├── test_date.py
493
+ │ ├── test_number.py
494
+ │ ├── test_text.py
495
+ │ ├── test_uuid.py
496
+ │ └── test_json.py
497
+ ├── pyproject.toml
498
+ ├── README.md
499
+ ├── LICENSE
500
+ └── requirements.txt
501
+ ```
502
+
503
+ ---
504
+
505
+ ## انتشار در PyPI
506
+
507
+ ### آماده‌سازی
508
+
509
+ ```bash
510
+ pip install --upgrade build twine
511
+ ```
512
+
513
+ ### بیلد
514
+
515
+ ```bash
516
+ rm -rf dist/ build/ src/*.egg-info
517
+ python -m build
518
+ ```
519
+
520
+ این دستور دو فایل در `dist/` می‌سازد:
521
+ - `persian_devkit-0.1.0-py3-none-any.whl`
522
+ - `persian_devkit-0.1.0.tar.gz`
523
+
524
+ ### تست محلی
525
+
526
+ ```bash
527
+ python -m twine check dist/*
528
+ pip install dist/*.whl
529
+ pdev --version
530
+ ```
531
+
532
+ ### آپلود به TestPyPI (پیشنهادی)
533
+
534
+ ```bash
535
+ python -m twine upload --repository testpypi dist/*
536
+ pip install -i https://test.pypi.org/simple/ persian-devkit
537
+ ```
538
+
539
+ ### آپلود به PyPI
540
+
541
+ ```bash
542
+ python -m twine upload dist/*
543
+ ```
544
+
545
+ سپس هر کاربر می‌تواند با یک دستور نصب کند:
546
+
547
+ ```bash
548
+ pip install persian-devkit
549
+ ```
550
+
551
+ > برای اطلاعات بیشتر دربارهٔ `~/.pypirc` و کلیدهای API، به [مستندات رسمی PyPI](https://packaging.python.org/) مراجعه کن.
552
+
553
+ ---
554
+
555
+ ## مجوز
556
+
557
+ MIT © 2026 — برای جزئیات `LICENSE` را ببین.
558
+
559
+ ### نکتهٔ کاربران ویندوز
560
+
561
+ برای پشتیبانی کامل از متن فارسی در CMD، ابتدا در ترمینال خود این را اجرا کنید:
562
+
563
+ chcp 65001
564
+
565
+ یا از PowerShell استفاده کنید که به‌طور پیش‌فرض UTF-8 است:
566
+
567
+ "می روم" | pdev text halfspace
568
+
569
+
570
+
571
+
572
+
573
+
574
+
575
+
576
+
577
+
578
+
579
+
580
+ ### `pdev yaml` / `pdev toml` / `pdev csv` / `pdev env`
581
+
582
+ تبدیل و اعتبارسنجی داده‌های ساختاریافته:
583
+
584
+ ```bash
585
+ $ pdev yaml to-json config.yaml
586
+ $ pdev yaml from-json data.json -o config.yaml
587
+ $ pdev toml to-json pyproject.toml
588
+ $ pdev csv show data.csv
589
+ $ pdev csv to-json data.csv
590
+ $ pdev csv filter data.csv age "^3" --ignore-case
591
+ $ pdev env show .env # مقادیر حساس مخفی
592
+ $ pdev env to-shell .env # export KEY=...
593
+ $ pdev env sort .env -o .env.sorted
594
+ ```
595
+
596
+
597
+
598
+
599
+
600
+
601
+ ### 🔍 `pdev jq` — کوئری JSON (جایگزین سادهٔ jq)
602
+
603
+ ```bash
604
+ $ echo '{"user": {"name": "علی", "age": 30}}' | pdev jq .user.name -r
605
+ علی
606
+
607
+ $ pdev jq .items[0] -f data.json
608
+ $ pdev jq '.items[*].name' -f data.json -r
609
+ $ pdev jq '.config.database.host' -f config.json -r
610
+ $ pdev jq '["key with space"]' -f d.json
611
+ ```
612
+
613
+ مسیرهای پشتیبانی‌شده:
614
+ - `.key` → دسترسی به کلید
615
+ - `.a.b.c` → تودرتو
616
+ - `.items[0]` → اندیس آرایه
617
+ - `.items[*]` → همهٔ عناصر
618
+ - `["key with space"]` → کلید با کاراکتر خاص
619
+
620
+ ### `pdev lorem` — متن نمونهٔ فارسی
621
+
622
+ ```bash
623
+ $ pdev lorem sentence
624
+ زبان فارسی گنجینه‌ای از ادبیات و فرهنگ است.
625
+
626
+ $ pdev lorem paragraph -s 3
627
+ ...
628
+ $ pdev lorem words -c 6
629
+ $ pdev lorem all -p 3 -s 4
630
+ ```
631
+
632
+ ### `pdev name` — نام و دادهٔ نمونهٔ فارسی
633
+
634
+ ```bash
635
+ $ pdev name full
636
+ علی احمدی
637
+
638
+ $ pdev name full -g female -c 3
639
+ سارا رضایی
640
+ مریم حسینی
641
+ فاطمه محمدی
642
+
643
+ $ pdev name email
644
+ ali.ahmadi42@example.com
645
+
646
+ $ pdev name profile -c 3 -j
647
+ [
648
+ {"name": "علی احمدی", "email": "...", "city": "تهران"},
649
+ ...
650
+ ]
651
+ ```
652
+
653
+
654
+
655
+
656
+
657
+ ### `pdev license` — تولید لایسنس
658
+
659
+ ```bash
660
+ $ pdev license list
661
+ $ pdev license show MIT -a "علی رضایی" -y 2024
662
+ $ pdev license new Apache-2.0 -a "Sara" -o LICENSE
663
+ ```
664
+
665
+ ### `pdev gitignore` — تولید .gitignore
666
+
667
+ ```bash
668
+ $ pdev gitignore list
669
+ $ pdev gitignore show python
670
+ $ pdev gitignore new python node macos -o .gitignore
671
+ $ pdev gitignore new rust --append
672
+ ```
673
+
674
+ ### `pdev scaffold` — ساخت پروژه از قالب
675
+
676
+ ```bash
677
+ $ pdev scaffold python myproject
678
+ ✓ پروژه ساخته شد: /home/user/myproject
679
+ • README.md
680
+ • pyproject.toml
681
+ • src/myproject/main.py
682
+ • tests/test_main.py
683
+
684
+ $ pdev scaffold node myapp --target ./projects
685
+ $ pdev scaffold minimal hello
686
+ ```
687
+
688
+ ### `pdev template` — رندر قالب متنی
689
+
690
+ ```bash
691
+ $ echo "سلام {{name}} از {{city}}" > greet.txt
692
+ $ pdev template greet.txt -D name=علی -D city=تهران
693
+ سلام علی از تهران
694
+
695
+ $ pdev template vars greet.txt
696
+ متغیرهای یافت‌شده (2):
697
+ • name
698
+ • city
699
+
700
+ $ pdev template config.tpl -D port=8080 -o config.yaml
701
+ ```
702
+