Skip to content

10. تمرين تطبيقي: الإصدار 2

Image

تقدم هذه النسخة الجديدة الملف التالي: [config.py]:


def configure():
    import os

    # المسار المطلق لمجلد هذا البرنامج النصي
    script_dir = os.path.dirname(os.path.abspath(__file__))

    # الجذر الذي سيتم قياس بعض المسارات النسبية انطلاقًا منه
    root_dir = "C:/Data/st-2020/dev/python/cours-2020/python3-flask-2020/impots"

    # تبعيات التطبيق
    absolute_dependencies = [
        f"{root_dir}/v01/shared",
    ]

    # تكوين التطبيق
    config = {
        # المسار المطلق لملف دافعي الضرائب
        "taxpayersFilename"f"{script_dir}/../data/taxpayersdata.txt",
        # المسار المطلق لملف النتائج
        "resultsFilename"f"{script_dir}/../data/résultats.txt"
    }

    # تحديث مسار النظام
    from myutils import set_syspath
    set_syspath(absolute_dependencies)

    # تحديد الإعدادات
    return config

تعليقات

  • السطر 5: يتم استرداد الاسم المطلق للمجلد الذي يحتوي على البرنامج النصي الذي يتم تنفيذه، وهو هنا البرنامج النصي [config.py]. وبالتالي نحصل على الاسم المطلق للمجلد [main]. وهذا المجلد هو نفسه الذي يحتوي على البرنامج النصي الرئيسي [main.py
  • السطر 8: عندما لا ينتمي ملف مرجعي إلى مجلد التطبيق، لن نستخدم [script_dir] لتحديد موقعه، بل سنستخدم [root_dir]. يجب تعديل هذا السطر فور تغيير موقع التطبيق في نظام الملفات؛
  • الأسطر 11-13: يتم سرد الأسماء المطلقة لجميع المجلدات التي يجب أن تكون موجودة في مسار Python (Python Path) حتى يعمل التطبيق. في السطر 12، يتم الإشارة إلى المجلد [shared] الخاص بالإصدار 1 من تمرين التطبيق؛
  • الأسطر 16-21: تحدد إعدادات التطبيق في قاموس [config]. هنا يتم إدخال المسارات المطلقة للملفات النصية التي يتعامل معها التطبيق. وللقيام بذلك، نستخدم [script_dir] الذي، كما نذكر، يشير هنا إلى المجلد [main]؛
  • السطران 24-25: يتم تحديد مسار Python الضروري للتطبيق؛

النص البرمجي الرئيسي [main.py] هو كما يلي:


# يتم تكوين التطبيق
import config

config = config.configure()

# تم تكوين syspath - يمكن إجراء عمليات الاستيراد
from impôts_module_01 import calcul_impôt, record_results, get_taxpayers_data

# ملف دافعي الضرائب
taxpayers_filename = config['taxpayersFilename']
# ملف النتائج
results_filename = config['resultsFilename']

# الرمز
try:

    # قراءة بيانات دافعي الضرائب
    taxpayers = get_taxpayers_data(taxpayers_filename)
    # قائمة النتائج
    results = []
    # حساب ضريبة المكلفين
    for taxpayer in taxpayers:
        # يُرجع حساب الضريبة قاموسًا من المفاتيح
        # ['marié', 'enfants', 'salaire', 'impôt', 'surcôte', 'décôte', 'réduction', 'taux']
        result = calcul_impôt(taxpayer['marié'], taxpayer['enfants'], taxpayer['salaire'])
        # تمت إضافة القاموس إلى قائمة النتائج
        results.append(result)
    # يتم تسجيل النتائج
    record_results(results_filename, results)
except BaseException as erreur:
    # قد تحدث أخطاء مختلفة: عدم وجود الملف، أو محتوى الملف غير صحيح
    # يتم عرض الخطأ والخروج من التطبيق
    print(f"L'erreur suivante s'est produite : {erreur}]\n")
finally:
    print("Travail terminé...")

تعليقات

  • الأسطر 1-4: يتم تكوين التطبيق؛
  • السطر 7: نعلم أنه بعد التهيئة، يكون مسار Python صحيحًا ويحتوي بشكل خاص على المجلد [shared] الذي يحتوي على البرنامج النصي [impôts_module_01]. من هذا البرنامج النصي، نستورد الوظائف التي نحتاجها؛
  • الأسطر 9-12: يتم العثور على أسماء الملفات المستخدمة في التهيئة. وهي أسماء مطلقة؛
  • الأسطر 14-35: نجد هنا كود الإصدار 1؛

لم تعمل الإصدارة 1 في وحدة تحكم Python. وفي نفس وحدة التحكم هذه، تعطي الإصدارة 2 النتائج التالية:

(venv) C:\Data\st-2020\dev\python\cours-2020\python3-flask-2020\impots\v02>python main/main.py
Travail terminé...

لم تعد تظهر أي أخطاء الآن.