qardlar — نماذج الانحدار الذاتي الموزّع الكمي بواجهة عربية
مكتبة بايثون علمية لتقدير نماذج QARDL (الانحدار الذاتي الموزّع الكمي) والاستدلال عنها، بواجهة عربية كاملة، منقولة عن مكتبة GAUSS QARDL 3.1.1 مع الحفاظ على المنهجية والخوارزميات وترتيب المعاملات وبنية المخرجات.
المؤلف: الدكتور مروان رودان — Dr. Merwan Roudane المستودع: https://github.com/merwanroudane/qardlar
المحتويات
- ما هي qardlar؟
- التثبيت
- أول برنامج
- النموذج الرياضي
- كيف تكتب كود qardlar؟
- مثال اقتصادي كامل
- مرجع سريع للدوال
- العلاقة بمكتبة GAUSS
- الاستشهاد
ما هي qardlar؟
المشكلة التي تحلّها
نماذج ARDL التقليدية تقدّر أثرًا واحدًا لكل متغير مستقل: أثرًا على متوسط المتغير التابع. لكن كثيرًا من الأسئلة الاقتصادية المهمة تتعلق بأجزاء أخرى من التوزيع:
- هل يؤثر ارتفاع سعر النفط في النمو الاقتصادي بالقدر نفسه في سنوات الركود (الكمّيات الدنيا) وسنوات الرواج (الكمّيات العليا)؟
- هل تعديل سعر الصرف نحو التوازن طويل الأجل أسرع حين يكون التضخم مرتفعًا؟
- هل علاقة استهلاك الطاقة بالناتج المحلي ثابتة عبر التوزيع أم تتغيّر؟
يجيب QARDL عن هذه الأسئلة: يقدّر معالم النموذج عند كل كمّية من توزيع
المتغير التابع، فتحصل على β(τ) بدل β واحدة، وعلى سرعة تعديل ρ(τ) بدل
ρ واحدة.
ما تقدّمه هذه المكتبة
| واجهة عربية كاملة | أسماء الدوال والمعاملات وحقول النتائج ورسائل الأخطاء بالعربية، مع مرادفات إنجليزية تطابق GAUSS |
| مطابقة عددية موثّقة | 19 اختبار مطابقة ضد نتائج GAUSS المرجعية، بأرقام مقيسة لا مزعومة |
| جداول صالحة للنشر | تصدير إلى LaTeX و HTML و Markdown و Excel، بأربع سمات أكاديمية |
| رسوم بجودة النشر | لوحات ألوان مناسبة للطباعة، بما فيها خيار رمادي خالص |
| حلّال دقيق | حل مسألة البرمجة الخطية مباشرةً مع صقل الحل، بدل التقريب التكراري |
ما لا تقدّمه
عائلتا NARDL (اللاخطي) و CS-ARDL (البانل) خارج نطاق هذه المكتبة.
هذا قرار نطاق صريح: qardlar مكرّسة لعائلة QARDL وما تحتاجه فعليًا.
التثبيت
الطريقة المعتادة
pip install qardlar
pip install "qardlar[all]"
git clone https://github.com/merwanroudane/qardlar.git
cd qardlar
pip install -e ".[dev]"
المتطلبات
| الحزمة | الغرض | إلزامية؟ |
|---|---|---|
numpy ≥ 1.23 |
العمليات المصفوفية | ✅ |
scipy ≥ 1.9 |
حلّال البرمجة الخطية والتوزيعات | ✅ |
pandas ≥ 1.5 |
إطارات البيانات والصيغ | ✅ |
matplotlib ≥ 3.6 |
الرسوم | اختيارية |
openpyxl ≥ 3.1 |
تصدير Excel | اختيارية |
التحقق من التثبيت
import qardlar as qa
print(qa.__version__)
نتيجة = qa.qardl(qa.بيانات_تجريبية(500), 2, 1)
print(نتيجة.ملخص())
# ١) استيراد المكتبة. الاسم المختصر qa اصطلاح شائع.
import qardlar as qa
# ٢) تحميل بيانات. هنا نستخدم المجموعة المرفقة مع المكتبة.
# البيانات مصفوفة أعمدتها [y, x1, x2]: العمود الأول هو المتغير التابع.
بيانات = qa.بيانات_تجريبية()
# ٣) تحديد الكمّيات التي نريد التقدير عندها.
# 0.25 = الربيع الأدنى، 0.50 = الوسيط، 0.75 = الربيع الأعلى.
الكمّيات = [0.25, 0.50, 0.75]
# ٤) التقدير: p=2 يعني إبطاءين للمتغير التابع،
# q=1 يعني إبطاءًا واحدًا لفروق المتغيرات المستقلة.
نتيجة = qa.qardl(بيانات, 2, 1, الكمّيات)
# ٥) عرض جدول النتائج.
print(نتيجة.ملخص())
# ٦) الوصول إلى الأرقام مباشرةً.
print("المعاملات طويلة الأجل:")
print(نتيجة.إعادة_تشكيل("بيتا")) # مصفوفة صفوفها الكمّيات وأعمدتها المتغيرات
print("سرعة التعديل عند كل كمّية:", نتيجة.رو)
$$ Q_{y_t}(\tau \mid \mathcal{F}_{t-1}) = \alpha(\tau)
- \sum_{i=1}^{k}\sum_{j=0}^{q-1} \gamma_{ij}(\tau),\Delta x_{i,t-j}
- \sum_{i=1}^{k} \theta_i(\tau), x_{it}
- \sum_{j=1}^{p} \phi_j(\tau), y_{t-j} $$
وتُشتق منه الكميتان الأهم في التفسير الاقتصادي:
$$ \beta(\tau) = \frac{\theta(\tau)}{1 - \sum_{j=1}^{p}\phi_j(\tau)} \qquad\text{(المعامل طويل الأجل)} $$
$$ \rho(\tau) = -\Bigl(1 - \sum_{j=1}^{p}\phi_j(\tau)\Bigr) \qquad\text{(سرعة التعديل)} $$
كيف تقرأ هذه المعالم؟
| المعلمة | المعنى | كيف تقرأها |
|---|---|---|
β(τ) |
الأثر طويل الأجل | تغيّر y عند الكمّية τ استجابةً لتغيّر دائم بوحدة واحدة في x |
ρ(τ) |
سرعة التعديل | نسبة الانحراف عن التوازن التي تُصحَّح في فترة واحدة. يجب أن تكون سالبة |
γ(τ) |
الأثر قصير الأجل | الاستجابة الفورية لتغيّر x |
φ(τ) |
الإبطاء الذاتي | استمرارية y عبر الزمن |
قراءة مسار β(τ): إذا كان مسطّحًا عبر الكمّيات فالأثر متجانس، ولا يضيف
QARDL على ARDL. أما إن كان مائلًا أو متعرّجًا فالأثر يختلف باختلاف موضع
التوزيع، وهذا هو مبرر استخدام QARDL.
الافتراضات الأساسية
p ≥ 1مطلوبة؛ الحالةp = 0غير مدعومة. أماq = 0فمدعومة.- يفترض تفسير
βوجود تكامل مشترك بينyوx. افحص ذلك باختبار الحدود قبل تفسير المعاملات طويلة الأجل. - البيانات مرتّبة زمنيًا وخالية من القيم المفقودة.
كيف تكتب كود qardlar؟
دليل عملي خطوة بخطوة. يفترض أنك تعرف الاقتصاد القياسي لكنك جديد على بايثون.
١. كيف أستورد المكتبة؟
import qardlar as qa # الطريقة الموصى بها
# أو استيراد ما تحتاجه فقط:
from qardlar import qardl, qardlFull, بيانات_تجريبية
import pandas as pd
df = pd.read_csv("بياناتي.csv") # من ملف CSV
df = pd.read_excel("بياناتي.xlsx") # من ملف Excel
print(df.head()) # عرض أول خمسة صفوف
print(df.isna().sum()) # فحص القيم المفقودة
df = df.dropna() # حذف الصفوف الناقصة
٣. كيف أحدّد المتغير التابع والمستقلة؟
طريقتان:
الأولى — بالصيغة (الأوضح): تكتب الصيغة فتتولى المكتبة ترتيب الأعمدة. أسماء الأعمدة العربية مدعومة بلا قيود.
نتيجة = qa.qardlFull(df, 4, 4, formula="التضخم ~ سعر_الفائدة + سعر_الصرف")
الثانية — بترتيب الأعمدة: تُرتِّب البيانات بنفسك بحيث يكون المتغير التابع في العمود الأول.
بيانات = df[["التضخم", "سعر_الفائدة", "سعر_الصرف"]].to_numpy()
نتيجة = qa.qardl(بيانات, 2, 1)
نتيجة = qa.qardl(بيانات, 2, 1) # p = 2، q = 1
آليًا بمعيار معلومات:
p, q = qa.pqorder(بيانات, 8, 8, "bic") # أو "aic" أو "hqc" أو "gets"
print(f"الرتب المختارة: p = {p}، q = {q}")
نتيجة = qa.qardl(بيانات, p, q)
برتبة مختلفة لكل متغير:
نتيجة = qa.qardlX(بيانات, 2, [1, 3]) # q=1 للمتغير الأول، q=3 للثاني
نتيجة = qa.qardl(بيانات, 2, 1, [0.25, 0.50, 0.75]) # ثلاث كمّيات
نتيجة = qa.qardl(بيانات, 2, 1, [0.1, 0.25, 0.5, 0.75, 0.9]) # خمس كمّيات
import numpy as np
شبكة = np.arange(0.05, 1.0, 0.05) # شبكة كثيفة لرسم مسار سلس
نتيجة = qa.qardl(بيانات, 2, 1, شبكة)
نصيحة: الكمّيات القصوى (أقل من 0.05 أو أكثر من 0.95) تحتاج عينات كبيرة لأن عدد المشاهدات في ذيل التوزيع قليل.
٦. كيف أطبع جدول النتائج؟
print(نتيجة.ملخص()) # السمة الافتراضية
print(نتيجة.ملخص(السمة="journal")) # أكثر إحكامًا
print(نتيجة.ملخص(فترات=False)) # بلا فترات ثقة
print(نتيجة.ملخص(مستوى_الثقة=0.99)) # فترات 99%
جدول = نتيجة.ملخص()
جدول.حفظ("النتائج.tex") # LaTeX جاهز للورقة البحثية
جدول.حفظ("النتائج.html") # HTML بدعم الاتجاه من اليمين لليسار
جدول.حفظ("النتائج.md") # Markdown
جدول.حفظ("النتائج.xlsx") # Excel
جدول.حفظ("النتائج.csv") # CSV
df_نتائج = جدول.إلى_إطار() # إطار بيانات للتحليل اللاحق
from qardlar.plots import رسم_QARDL, رسم_QIRF, رسم_البواقي, حفظ_الشكل
شكل = رسم_QARDL(نتيجة) # مسار المعالم عبر الكمّيات
شكل = رسم_QARDL(نتيجة, اللوحة="رمادية") # للطباعة بالأبيض والأسود
حفظ_الشكل(شكل, "الشكل_1.pdf") # PDF متجهي للنشر
حفظ_الشكل(شكل, "الشكل_1.png", dpi=600)
حدود = qa.ardlbounds(بيانات, 2, 1)
print(حدود.ملخص())
print(حدود.القرار) # نص عربي واضح بنتيجة الاختبار
تشخيص = qa.ardlResidualDiagnostics(نتيجة)
print(تشخيص.ملخص())
يشمل: Ljung-Box و Breusch-Godfrey للارتباط الذاتي، Breusch-Pagan و ARCH لعدم تجانس التباين، Jarque-Bera للاعتدالية، Ramsey RESET للشكل الدالي، CUSUM و CUSUMSQ للاستقرار.
١١. كيف أختبر تغيّر المعالم عبر الكمّيات؟
هذا هو الاختبار الذي يبرّر استخدام QARDL أصلًا:
w = qa.qardlWald(نتيجة, بيانات, test="constancy")
print(w.ملخص())
# رفض فرضية العدم ⇒ المعالم تتغيّر فعلًا عبر الكمّيات ⇒ QARDL يضيف معلومة
# قيود مخصصة بصياغة نصية مقروءة:
w2 = qa.qardlWald(نتيجة, بيانات, test="custom", family="beta",
restrictions=["beta[1,0.25] = beta[1,0.75]"])
مقدَّر = qa.predictQARDL(نتيجة, بيانات) # داخل العينة
توقع = qa.forecastQARDL(نتيجة, بيانات, h=12) # خارج العينة
# مع مسار مفترض للمتغيرات المستقلة (تحليل سيناريو):
import numpy as np
مسار = بيانات[-1, 1:] + np.arange(1, 13)[:, None] * [0.1, -0.05]
توقع = qa.forecastQARDL(نتيجة, بيانات, h=12, future_x=مسار)
try:
نتيجة = qa.qardl(بيانات, 0, 1)
except qa.QardlarLagError as خطأ:
print(خطأ) # qardl: p يجب أن يكون عددًا صحيحًا موجبًا
qa.set_language("en") # للتبديل إلى الإنجليزية
| نوع الخطأ | متى يقع |
|---|---|
QardlarLagError |
رتبة إبطاء غير صالحة |
QardlarQuantileError |
كمّية خارج (0, 1) أو مكرّرة |
QardlarDataError |
قيم مفقودة أو شكل بيانات خاطئ |
QardlarSampleError |
مشاهدات غير كافية للرتب المطلوبة |
QardlarLinAlgError |
مصفوفة تصميم ناقصة الرتبة |
QardlarOptionError |
قيمة خيار غير مدعومة |
١٤. كيف أغيّر مقدّر التباين؟
نتيجة = qa.qardl(بيانات, 2, 1, الكمّيات, "iid") # الافتراضي
نتيجة = qa.qardl(بيانات, 2, 1, الكمّيات, "robust") # حصين لعدم التجانس
نتيجة = qa.qardl(بيانات, 2, 1, الكمّيات, "hac") # HAC مع اقتطاع تلقائي
نتيجة = qa.qardl(بيانات, 2, 1, الكمّيات, "hac", 8) # اقتطاع محدَّد
⚠️ تنبيه مهم: يخزّن المسار
iidتباينβبمقياس(n−1)²وتباينφوγبمقياس(n−1)، وهو اصطلاح موروث من المكتبة الأصلية. لا تقارنتباين_بيتاالخام بين مسارين مختلفين؛ استخدم دائمًانتيجة.أخطاء_معيارية()التي تزيل المقياس.
١٥. كيف أفحص استقرار المعالم عبر الزمن؟
متدحرج = qa.rollingQardl(بيانات, 4, 4, [0.25, 0.5, 0.75], حجم_النافذة=250)
from qardlar.plots import رسم_المتدحرج
شكل = رسم_المتدحرج(متدحرج, معلمة="بيتا")
مثال اقتصادي كامل
السؤال البحثي: هل يختلف أثر استهلاك الطاقة في النمو الاقتصادي باختلاف وتيرة النمو نفسها؟ الفرضية أن الأثر أقوى في سنوات النمو الضعيف، حيث تكون الطاقة قيدًا فعّالًا، وأضعف في سنوات النمو القوي.
import qardlar as qa
import numpy as np
from qardlar.plots import رسم_QARDL, حفظ_الشكل
# ═══ ١. البيانات ═══════════════════════════════════════════════
# نستخدم هنا المجموعة المرفقة لأغراض العرض. في بحث حقيقي استبدلها
# ببياناتك: pd.read_csv("طاقة_ونمو.csv")
بيانات = qa.بيانات_تجريبية()
# ═══ ٢. سير العمل المتكامل ════════════════════════════════════
# ينفّذ الخطوات الأربع بترتيبها الصحيح:
# اختيار الرتب ← اختبار الحدود ← تقدير المستويات ← تقدير ECM
نتيجة = qa.qardlFull(
بيانات,
pend=4, qend=4, # حدود البحث عن الرتب
tau=[0.1, 0.25, 0.5, 0.75, 0.9], # خمس كمّيات
criterion="bic",
cov_type="hac", # تباين حصين للارتباط الذاتي
)
# ═══ ٣. هل توجد علاقة توازنية طويلة الأجل؟ ═══════════════════
print(نتيجة.الحدود.ملخص())
print("القرار:", نتيجة.الحدود.القرار)
# ⚠️ إن كانت النتيجة "عدم رفض" فالمعاملات طويلة الأجل بلا معنى — توقّف هنا.
# ═══ ٤. النتائج ═══════════════════════════════════════════════
print(نتيجة.المستويات.ملخص())
print(نتيجة.ECM.ملخص())
# ═══ ٥. هل يضيف QARDL على ARDL فعلًا؟ ════════════════════════
w = qa.qardlWald(نتيجة.المستويات, بيانات, test="constancy")
print(w.ملخص())
# ═══ ٦. فحص افتراضات النموذج ═════════════════════════════════
print(نتيجة.تشخيص_المستويات.ملخص())
# ═══ ٧. الرسوم ════════════════════════════════════════════════
شكل = رسم_QARDL(نتيجة.المستويات)
حفظ_الشكل(شكل, "الشكل_1_مسار_المعالم.pdf")
# ═══ ٨. تصدير الجداول للورقة البحثية ═════════════════════════
نتيجة.المستويات.ملخص(السمة="journal").حفظ("الجدول_1.tex")
نتيجة.ECM.ملخص(السمة="journal").حفظ("الجدول_2.tex")
# ═══ ٩. القراءة الاقتصادية ═══════════════════════════════════
بيتا = نتيجة.المستويات.إعادة_تشكيل("بيتا")
for i, τ in enumerate(نتيجة.تاو):
print(f"τ = {τ:.2f}: β₁ = {بيتا[i, 0]:8.4f} "
f"ρ = {float(نتيجة.ECM.رو[i]):8.4f}")
كيف تفسّر هذه المخرجات في ورقتك
- اختبار الحدود أولًا. إن لم تُرفض فرضية العدم فلا تفسّر
βإطلاقًا. - مسار
β(τ). ميل المسار هو النتيجة البحثية: انحداره يعني أن الأثر أقوى في الكمّيات الدنيا. - اختبار الثبات. رفضه هو ما يبرّر منهجيًا استخدام QARDL بدل ARDL.
ρ(τ)سالبة ومعنوية تدل على التعديل نحو التوازن. اختلاف مقدارها عبر الكمّيات يعني أن سرعة العودة إلى التوازن تتوقف على حالة الاقتصاد.- التشخيص. لا تنشر نتائج نموذج فشل في اختبارات الارتباط الذاتي أو الاستقرار.
⚠️ تحذير سببي. نماذج ARDL/QARDL تصف علاقات ديناميكية وارتباطات شرطية، ولا تُثبت سببية بذاتها. لا تصف النتائج بلغة سببية ما لم يوفّر تصميمك البحثي مبرّرًا لذلك (تجربة طبيعية، متغيرات مساعدة، أو ما شابه).
مرجع سريع للدوال
| ما تريد فعله | الأمر |
|---|---|
| تقدير QARDL | qa.qardl(بيانات, p, q, tau) |
| تقدير بتباين حصين | qa.qardlRobust(بيانات, p, q, tau) |
| تقدير بتباين HAC | qa.qardlHAC(بيانات, p, q, tau) |
| رتبة إبطاء لكل متغير | qa.qardlX(بيانات, p, [q1, q2], tau) |
| نموذج تصحيح الخطأ | qa.qardlECM(بيانات, p, q, tau) |
| سير العمل المتكامل | qa.qardlFull(بيانات, 8, 8, tau) |
| اختيار الإبطاءات | qa.pqorder(بيانات, 8, 8, "bic") |
| اختبار الحدود | qa.ardlbounds(بيانات, p, q) |
| اختبار الحدود بحالة | qa.ardlboundsCase(بيانات, p, q, 3) |
| القيم الاحتمالية | qa.qardl_pval(نتيجة) |
| اختبار ثبات المعالم | qa.qardlWald(نتيجة, بيانات, test="constancy") |
| اختبار التماثل | qa.qardlWald(نتيجة, بيانات, test="symmetry") |
| تشخيص البواقي | qa.ardlResidualDiagnostics(نتيجة) |
| استجابة نبضية | qa.qirf(نتيجة, p, q, H) |
| استجابة بنطاقات ثقة | qa.blockBootstrapQIRF(بيانات, p, q, H) |
| فترات bootstrap | qa.blockBootstrapQARDL(بيانات, p, q, tau) |
| تقدير متدحرج | qa.rollingQardl(بيانات, 8, 8, tau) |
| تنبؤ داخل العينة | qa.predictQARDL(نتيجة, بيانات) |
| توقع خارج العينة | qa.forecastQARDL(نتيجة, بيانات, h) |
| طباعة جدول | print(نتيجة.ملخص()) |
| حفظ جدول | نتيجة.ملخص().حفظ("ملف.tex") |
| رسم المعالم | qa.plots.رسم_QARDL(نتيجة) |
انظر docs/CHEATSHEET_AR.md للمرجع الكامل.
العلاقة بمكتبة GAUSS
qardlar نقل لمكتبة GAUSS QARDL 3.1.1، لا إعادة تصميم. حُوفظ على:
- أسماء الإجراءات وترتيب معاملاتها وقيمها الافتراضية
- أسماء حقول المخرجات (كمرادفات إنجليزية)
- الخوارزميات ومسارات التباين الثلاثة
- الاصطلاحات العددية، بما فيها ما قد يبدو غريبًا (انظر §4.5 من ملف التوافق)
مستوى المطابقة العددية
| المكوّن | أقصى فرق | الحالة |
|---|---|---|
| معاملات ARDL طويلة الأجل | 1.0e-10 |
✅ |
| اختبار الحدود | 2.8e-10 |
✅ |
| جدول القيم الحرجة PSS | 0 |
✅ مطابقة تامة |
QARDL عند τ = 0.25 و 0.75 |
8.8e-11 |
✅ |
QARDL عند τ = 0.50 |
5.1e-08 |
⚠️ موثّق |
| كل ما يعتمد على العشوائية | — | ⛔ مكافئ إحصائيًا لا رقميًا |
الفرق عند الوسيط يقع دون الدقة التي تنشر بها GAUSS معاملاتها نفسها،
ويتسق مع عدم وحدانية حل انحدار الوسيط. التفاصيل الكاملة والأدلة في
docs/GAUSS_PYTHON_COMPATIBILITY.md.
للقادمين من GAUSS
انظر docs/GAUSS_TO_QARDLAR.md لدليل التحويل
سطرًا بسطر.
الوثائق
| الملف | المحتوى |
|---|---|
docs/ARABIC_SYNTAX_GUIDE.md |
دليل كتابة الكود خطوة بخطوة |
docs/GAUSS_TO_QARDLAR.md |
دليل الانتقال من GAUSS |
docs/GAUSS_PYTHON_COMPATIBILITY.md |
مصفوفة التوافق العددي |
docs/ARABIC_TERMINOLOGY.md |
قاموس المصطلحات المعتمد |
docs/CHEATSHEET_AR.md |
مرجع سريع |
examples/ |
أمثلة ودفاتر تعليمية |
الاستشهاد
إن استخدمت هذه المكتبة في عمل أكاديمي، فاستشهد بالمكتبة وبالمنهجية:
@software{roudane_qardlar,
author = {Roudane, Merwan},
title = {{qardlar: Quantile Autoregressive Distributed Lag Models
with an Arabic-first API}},
year = {2026},
url = {https://github.com/merwanroudane/qardlar}
}
@article{cho_kim_shin_2015,
author = {Cho, Jin Seo and Kim, Tae-Hwan and Shin, Yongcheol},
title = {Quantile cointegration in the autoregressive
distributed-lag modeling framework},
journal = {Journal of Econometrics},
year = {2015}, volume = {188}, number = {1}, pages = {281--300},
doi = {10.1016/j.jeconom.2015.05.003}
}
انظر CITATION.md للتفاصيل، ولا تنسَ الاستشهاد بمكتبة GAUSS
الأصلية إن قارنت بها.
الترخيص
MIT. هذه المكتبة نقل لمكتبة GAUSS QARDL 3.1.1 المرخّصة كذلك بـ MIT
(© 2026 Aptech Systems, Inc.). انظر LICENSE و
NOTICE.
لا تتبنّى Aptech Systems ولا مؤلفو المنهجية هذا النقل ولا يتحملون مسؤوليته.
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 qardlar-0.1.0.tar.gz.
File metadata
- Download URL: qardlar-0.1.0.tar.gz
- Upload date:
- Size: 254.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8c00dacc6ed763394849da5aaa80cacb95ebc836e1a981943270ebadf355a84
|
|
| MD5 |
83056be331abad916f676c206ec74739
|
|
| BLAKE2b-256 |
6cc7bed932ade1ad5152670d56d26c878946d85867b2e06942f2dd37ab4be120
|
File details
Details for the file qardlar-0.1.0-py3-none-any.whl.
File metadata
- Download URL: qardlar-0.1.0-py3-none-any.whl
- Upload date:
- Size: 257.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fdf001e88124fb39363b31101a71bbb33f52c8ad39ae05499daac7f57372f94
|
|
| MD5 |
adb917867b3491ed6170b94f4f0dbcba
|
|
| BLAKE2b-256 |
8ae75be813688126e8b57c8a4313922c15306053225afb5bef4d4cb48d426565
|