import sys
from types import ModuleType

# 1. حل مشكلة التوافق مع بايثون الحديثة (3.13+)
if 'audioop' not in sys.modules:
    mock = ModuleType('audioop')
    mock.reverse = lambda data, width: data
    sys.modules['audioop'] = mock

# 2. استيراد المكتبة الأساسية
from pyquran import quran

# 3. القائمة الكاملة لـ 114 سورة (الخريطة الذكية)
SURAH_MAP = {
    "الفاتحة": 1, "البقرة": 2, "آل عمران": 3, "النساء": 4, "المائدة": 5, "الأنعام": 6, "الأعراف": 7, "الأنفال": 8,
    "التوبة": 9, "يونس": 10, "هود": 11, "يوسف": 12, "الرعد": 13, "إبراهيم": 14, "الحجر": 15, "النحل": 16,
    "الإسراء": 17, "الكهف": 18, "مريم": 19, "طه": 20, "الأنبياء": 21, "الحج": 22, "المؤمنون": 23, "النور": 24,
    "الفرقان": 25, "الشعراء": 26, "النمل": 27, "القصص": 28, "العنكبوت": 29, "الروم": 30, "لقمان": 31, "السجدة": 32,
    "الأحزاب": 33, "سبأ": 34, "فاطر": 35, "يس": 36, "الصافات": 37, "ص": 38, "الزمر": 39, "غافر": 40,
    "فصلت": 41, "الشورى": 42, "الزخرف": 43, "الدخان": 44, "الجاثية": 45, "الأحقاف": 46, "محمد": 47, "الفتح": 48,
    "الحجرات": 49, "ق": 50, "الذاريات": 51, "الطور": 52, "النجم": 53, "القمر": 54, "الرحمن": 55, "الواقعة": 56,
    "الحديد": 57, "المجادلة": 58, "الحشر": 59, "الممتحنة": 60, "الصف": 61, "الجمعة": 62, "المنافقون": 63, "التغابن": 64,
    "الطلاق": 65, "التحريم": 66, "الملك": 67, "القلم": 68, "الحاقة": 69, "المعارج": 70, "النبأ": 71, "النازعات": 72,
    "عبس": 73, "التكوير": 74, "الانفطار": 75, "المطففين": 76, "الانشقاق": 77, "البروج": 78, "الطارق": 79, "الأعلى": 80,
    "الغاشية": 81, "الفجر": 82, "البلد": 83, "الشمس": 84, "الليل": 85, "الضحى": 86, "الشرح": 87, "التين": 88,
    "العلق": 89, "القدر": 90, "البينة": 91, "الزلزلة": 92, "العاديات": 93, "القارعة": 94, "التكاثر": 95, "العصر": 96,
    "الهمزة": 97, "الفيل": 98, "قريش": 99, "الماعون": 100, "الكوثر": 101, "الكافرون": 102, "النصر": 103, "المسد": 104,
    "الإخلاص": 112, "الفلق": 113, "الناس": 114
}

# 4. الدوال الأساسية
def get_word_root(word):
    """جلب جذر الكلمة"""
    return quran.get_root(quran.strip_tashkeel(word))

def get_verse_text(surah_num, verse_num, with_tashkeel=True):
    """جلب الآية بالرقم"""
    try:
        return quran.get_verse(surah_num, verse_num, with_tashkeel=with_tashkeel)
    except Exception:
        return "خطأ: تأكد من أرقام السورة والآية"

def get_verse_by_name(surah_name, verse_num, with_tashkeel=True):
    """الميزة الاحترافية: جلب الآية باسم السورة"""
    surah_id = SURAH_MAP.get(surah_name)
    if surah_id:
        return get_verse_text(surah_id, verse_num, with_tashkeel=with_tashkeel)
    return f"السورة '{surah_name}' غير موجودة، تأكد من كتابة الاسم باللغة العربية الصحيحة (مثال: 'البقرة')."

def list_surahs():
    """قائمة بكافة السور المتاحة"""
    return list(SURAH_MAP.keys())