A simple custom input validation utility
Project description
my-ask-lib (Ultimate Edition) 👑
"เขียนฟังก์ชันรับ Input บรรทัดเดียว ดักจับได้ทุกสถานการณ์"
หมดปัญหาการเขียนลูป while True, try-except, และเงื่อนไข if-else ซ้ำๆ ทุกครั้งที่ต้องการรับค่าจากผู้ใช้ ไลบรารีนี้จะรวมทุกตรรกะการตรวจสอบความถูกต้อง (Validation) ขั้นสูงไว้ในฟังก์ชันเดียว พร้อมการแสดงผลแจ้งเตือนที่สวยงามด้วย rich.logging
🔥 ฟีเจอร์เด่น (Superpowers)
- 🛡️ Auto-Validation: ตรวจสอบประเภทข้อมูลให้อัตโนมัติ (
str,int,float, ฯลฯ) - 🧠 Smart Boolean: แปลงค่า Yes/No, ใช่/ไม่, True/False, 1/0 เป็น
True/Falseของ Python ได้อย่างอัจฉริยะ - 🎯 Choices Enforcement: ล็อกตัวเลือกให้พิมพ์ได้เฉพาะค่าที่กำหนดเท่านั้น
- 📏 Range Control: ควบคุมช่วงของตัวเลข (ค่าต่ำสุด/สูงสุด) โดยไม่ต้องเขียนโค้ดเพิ่ม
- 🔍 Regex Pattern: ดักจับฟอร์แมตขั้นสูง เช่น Email, เบอร์โทรศัพท์, หรือรหัสเฉพาะตัวด้วย Regular Expression
- 🤫 Secret Input: ซ่อนการพิมพ์บนหน้าจอ Terminal สำหรับการรับรหัสผ่าน
- ⏱️ Max Retries: จำกัดจำนวนครั้งที่กรอกผิด ป้องกันผู้ใช้กรอกมั่วจนระบบค้าง
- 💡 Smart Prompt: แสดงคำใบ้ ช้อยส์ หรือค่า Default บน Prompt ให้อัตโนมัติ
🚀 การติดตั้ง
pip install my-ask-lib
🎯 ตัวอย่างการใช้งานจริง (Examples)
ดึงฟังก์ชัน ask ไปใช้งานในโปรเจกต์ของคุณ:
from my_ask import ask
# 1. ระบบเลือกเมนู (Enforce Choices)
role = ask("เลือกสิทธิ์การใช้งาน", choices=["admin", "user", "guest"])
# แสดงผล: เลือกสิทธิ์การใช้งาน (choices: admin, user, guest):
# 2. ระบบคุมช่วงตัวเลข (Min / Max Validation)
score = ask("กรอกคะแนนสอบ", type_fn=int, min_val=0, max_val=100)
# ถ้ากรอกต่ำกว่า 0 หรือเกิน 100 ระบบจะเตือนและดีดให้กรอกใหม่ทันที
# 3. ตรวจสอบฟอร์แมตอีเมลด้วย Regex (Pattern Matching)
email_pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
email = ask("กรอก Email", pattern=email_pattern, error_msg="รูปแบบอีเมลไม่ถูกต้องนะ!")
# 4. รับรหัสผ่านแบบซ่อนตัวอักษร (Secret Input)
password = ask("กรอกรหัสผ่าน", secret=True)
# 5. แปลงค่า Boolean อัจฉริยะ (Smart Bool)
is_ready = ask("คุณพร้อมหรือยัง? (y/n)", type_fn=bool)
# รองรับทั้ง: y, yes, true, 1, ใช่, n, no, false, 0, ไม่
# 6. ตั้งค่าเริ่มต้น และจำกัดจำนวนครั้งที่กรอกผิด (Default & Max Retries)
speed = ask("ตั้งค่าความเร็ว", type_fn=int, default=60, max_retries=3)
# ถ้ากด Enter ผ่านเลยจะได้ค่า 60 ทันที แต่ถ้าพิมพ์มั่วเกิน 3 ครั้งจะโยน TimeoutError ออกมา
⚙️ รายละเอียดพารามิเตอร์ (API Reference)
| Parameter | Type | Default | Description |
|---|---|---|---|
prompt |
str |
Required | ข้อความที่ต้องการแสดงเพื่อขอรับข้อมูลจากผู้ใช้ |
type_fn |
Callable |
str |
ฟังก์ชันแปลงประเภทข้อมูล เช่น int, float, bool (มีระบบ Smart Bool ในตัว) |
validate |
Callable / List |
None |
ฟังก์ชันหรือ Lambda สำหรับเช็คเงื่อนไขเพิ่มเติม (ใส่เป็นลิสต์ของหลายฟังก์ชันได้) |
choices |
List |
None |
ลิสต์รายการข้อมูลที่อนุญาตให้ผู้ใช้กรอกเท่านั้น |
default |
Any |
None |
ค่าเริ่มต้นที่จะคืนกลับไปทันทีหากผู้ใช้กด Enter ผ่าน (ค่าว่าง) |
min_val |
int / float |
None |
ค่าตัวเลขต่ำสุดที่ยอมรับได้ |
max_val |
int / float |
None |
ค่าตัวเลขสูงสุดที่ยอมรับได้ |
pattern |
str (Regex) |
None |
สตริง Regular Expression ที่ใช้ตรวจสอบรูปแบบของข้อมูล |
secret |
bool |
False |
หากเป็น True จะทำการซ่อนตัวอักษรขณะพิมพ์ (เหมาะสำหรับรหัสผ่าน) |
max_retries |
int |
None |
จำกัดจำนวนครั้งที่กรอกผิด หากเกินกำหนดจะระเบิด TimeoutError |
error_msg |
str |
None |
ข้อความแจ้งเตือนแบบกำหนดเองเมื่อเกิดการกรอกข้อมูลผิดพลาด |
allow_empty |
bool |
False |
หากเป็น True จะยอมให้ค่าว่างผ่านไปได้โดยคืนค่ากลับเป็น None (กรณีไม่มี default) |
📝 License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file my_ask_lib-0.2.2.tar.gz.
File metadata
- Download URL: my_ask_lib-0.2.2.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d3b21fcac6bb237ff5f6db56d12e73a448be5893a5def26d812a766b42a1fa1
|
|
| MD5 |
9684d3832296f48a424a857ae969ba9c
|
|
| BLAKE2b-256 |
84235e2c20dce3bf718fbb2109ea4bde103f769737a90ca8e1cf257c689337e9
|
File details
Details for the file my_ask_lib-0.2.2-py3-none-any.whl.
File metadata
- Download URL: my_ask_lib-0.2.2-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6ad26e4cb836f0e7bd8ea8dc1f49a9ad39f773d158b29764f551914ad649fe9
|
|
| MD5 |
f08a2075433e783a5ba118456309a4be
|
|
| BLAKE2b-256 |
c0de68c0f570fd4943fa5fd4707ff9f7fef9dcd736fc54daed1fc0f8b5c5aa3a
|