پرش به محتویات

مشارکت

راه انداختن کد

git clone https://github.com/amirAI-dot/django-clearance.git
cd django-clearance
python -m pip install nox

همه چیز از راه nox اجرا می‌شود، تا هر سیستمی - و CI - همان چیز را اجرا کند:

session چه چیزی را نگه می‌دارد
nox -s lint ruff، کد و قالب‌بندی آن
nox -s types mypy، سخت‌گیرانه
nox -s tests تست‌ها، روی همه‌ی نسخه‌های پشتیبانی‌شده‌ی پایتون و Django، با پوشش ۱۰۰٪
nox -s browser صفحه‌های پنل ادمین در یک مرورگر واقعی
nox -s messages catalogueهای فارسی همه‌ی رشته‌های علامت‌خورده را دارند، و نه بیشتر
nox -s package بسته ساخته و نصب می‌شود
nox -s docs این سایت بدون هیچ هشداری ساخته می‌شود
nox -s screenshots عکس‌های پنل ادمین، دوباره گرفته می‌شوند

یک ترکیب از تست‌ها، موقع کار:

nox -s "tests(3.13-django6.1)"

قراردادها

  • کد فقط به انگلیسی. هر پیامی که کسی می‌خواند برای ترجمه علامت می‌خورد؛ فارسی در catalogueهاست. رشته‌ی فارسی در یک تست با escapeهای \u نوشته می‌شود - یک تست مطمئن می‌شود کد فقط ASCII است.
  • هر تست به اسم رفتاری است که نگه می‌دارد - اینکه اگر رد شود در دنیا چه چیزی خراب می‌شود، نه اینکه کدام ماژول را پوشش می‌دهد.
  • پرسیدن ارزان است، و شمرده می‌شود. تغییری که برای هر ردیف یک کوئری اضافه کند ایراد است؛ یک تست کوئری‌ها را می‌شمرد و با ردیف‌های بیشتر دوباره می‌پرسد.
  • docstring هر ماژول می‌گوید چرا وجود دارد.
  • مستندات به انگلیسی و فارسی است، و با هم تغییر می‌کنند. یک صفحه و همتای فارسی‌اش همان عنوان‌ها، همان جدول‌ها و همان کدها را دارند.

تغییری در آنچه کسی می‌خواند

بعد از علامت زدن یک رشته:

nox -s messages

این session رشته‌ها را دوباره استخراج می‌کند و با هر تفاوتی ناموفق می‌شود - فارسی آنچه اضافه کرده را بنویسید، و بعد catalogue را با django-admin compilemessages در src/clearance کامپایل کنید.

تغییری در یک صفحه‌ی پنل ادمین

عکس‌ها را دوباره بگیرید، تا هیچ کدام از صفحه‌ای که نشان می‌دهد عقب نماند:

nox -s screenshots

یک pull request

در هر pull request یک تغییر، با تست‌هایش، و خطش در changelog - CHANGELOG.md و CHANGELOG.fa.md، زیر Unreleased. CI همه‌ی sessionهای بالا را اجرا می‌کند.