Development - Contributing¶
İlk öncə (və ən rahat), proyekti ulduzlayaraq yardımçı ola bilərsiniz.
Issue¶
Githubda yeni issue açaraq, yeni feature təklif edə, və ya mövcud bugları qeyd edə bilərsiniz. Bug qeyd etdikdə, istifadə etdiyiniz əməliyyat sistemi və kitabxananın versiyasını qeyd etməyiniz tövsiyyə olunur.
Development¶
Əgər integrify repo-sunu artıq klonlamısınızsa, növbəti mərhələləri izləyərək öz kodunuzu əlavə edə bilərsiniz. Contribution sadə və sürətli olsun deyə test və linting-i lokal mühitinizdə icra etməyiniz məsləhət görülür. Integrify-ın başqa kitabxanalardan çox az asılılığı olduğundan quraşdırılma çox sadədir.
Tip
tl;dr: Kodu format etmək üçün make format
, test və lint etmək üçün make
və dokumentasiya generasiya etmək üçün make docs
kommandını icra edin.
Rekvizitlər¶
- Python 3.9 və 3.12 arası istənilən versiya
- git
- make
- Poetry
İnstallasiya və quraşdırılma¶
# Proyekti klonlayın və həmin qovluğa keçin
git clone git@github.com:<your username>/integrify.git
cd integrify
# Poetry yükləyin (https://python-poetry.org/docs/#installation)
curl -sSL https://install.python-poetry.org | python3 -
# Bütün dependency-ləri yükləyin
make install
Yeni branch-a keçin və öz dəyişiklikləriniz əlavə edin¶
# Yeni branch-a keçid edin
git checkout -b my-new-feature-branch
# Öz dəyişikliklərini əlavə edin...
Warning
Branch adını uyğun seçin:
- Bug düzəldirsizsə,
bug/branch-name
- Yeni inteqrasiya əlavə edirsizsə,
integration/integration-name
- Kiçik fix-dirsə:
fix/branch-name
- Dokumentasiya üzərində işləyirsinizsə:
docs/branch-name
Test və Linting¶
Kod dəyişiklikləriniz etdikdən sonra lokalda testləri və lintingi işə salın:
make format
# Integrify Rust-da yazılmış ruff Python linterini istifadə edir
# https://github.com/astral-sh/ruff
make
# Bu kommand öz içində bir neçə başqa kommandı icra edir (`test`, `testcov` and `lint`)
Yeni dokumentasiyanı generasiya edin¶
Əgər dokumentasiyada (və ya funksiyalarda, klass definitionlarında və ya docstring-lərdə) dəyişiklik etmisinizsə, yeni dokumentasiya generasiya edin.
Dokumentasiya üçün mkdocs-material
alətindən istifadə edirik.
# Dokumentasiya generasiya edin
make docs
# Əgər dokumentasiyaya təsir edəcək kod dəyişikliyi etmisinizsə,
# əmin olun ki, yeni dokumentasiya uğurlar generasiya olunur.
# make docs-serve kommandını icra etsəz, localhost:8000 addresində yeni dokumentasiyanı da görə bilərsiniz.
Dəyişiklikləriniz commit və push edin¶
Dəyişikliklərinizi bitirdək sonra, commit və öz branch-ınıza push edib, bizə pull request yaradın.
Pull request-iniz review üçün hazırdırsa, "Zəhmət olmazsa, review edin" comment-ini yazın, ən yaxın zamanda nəzər yetirəcəyik.
Kod arxitekturası (!)¶
Bu hissə uzun və detallı yazılmalı olduğundan, məqalə burada yerləşdirilib.
Dokumentasiya stili¶
Dokumentasiya markdown-da yazılır və Material for MkDocs aləti ilə generasiya olunur. API dokumentasiyası isə docstring-lərdən mkdocstrings ilə generasiya olunur.
Kodun dokumentləşdirilməsi¶
Öz dəyişikliklərinizi əlavə edərkən, bütün kodun dokumentləşdirildiyindən əmin olun. Qeyd olunanlar format olunmuş docstring-lərlə yaxşıca dokumentləşdirilməlidir:
- Modullar
- Klass definition-ları
- Funksiya definition-ları
- Module səviyyəsində dəyişənlər
Integrify PEP 257 standartları ilə format olunmuş Google-style docstring-lərdən istifadə edir. (Əlavə məlumat üçün Example Google Style Python Docstrings-ə baxın.)
Docstring-lərdə misal (example) göstərə bilərsiniz. Bu misal tam işlənə bilən kod olmalıdır.
Dokumentasiya¶
Ümumiyyətlə, dokumentasiya əlçatan üslubda yazılmalıdır. Oxunması və başa düşülməsi asan olmalı, qısa və konkret olmalıdır.
Kod nümunələri əlavə etməyiniz şiddətlə tövsiyyə olunur, lakin qısa və sadə saxlanılmalıdır. Bununla belə, hər bir kod nümunəsi tam, müstəqil və işlək olmalıdır. (Bunu necə edəcəyinizə əmin deyilsinizsə, kömək istəyin!).
Tərcümə¶
Hal-hazırda proyekt əsasən Azərbaycanlı developerlər üçün nəzərdə tutulduğundan, dokumentasiya və docstring-lər Azərbaycan dilindədir. Amma, bu proyekti gələcəkdə daha qloballaşdırmaq fikrində olduğumuzdan, ingiliscəyə tərcümədə yardıma ehtiyacımız var. Gələcəkdə ölkə-spesifik inteqrasiyalar mövcud olduqda, həmin dillərə də ehtiyac duyacağıq.