We're always grateful for contributions to Django's code. Indeed, bug reports with associated contributions will get fixed far more quickly than those without a solution.
Jika anda sedang memperbaiki masalah sepele, sebagai contoh merubah sebuah kata di dokumentasi, cara dipilih untuk menyediakan tambalan adalah menggunakan menarik permintaan GitHub tanpa tiket Trac.
Lihat Bekerja dengan Git dan GitHub untuk rincian lebih bagaimana menggunakan pull request.
Dalam sebuah proyek sumber-terbuka dengan ratusan penyumbang diseluruh dunia, adalah sangat penting untuk mengelola komunikasi secara efektif sehingga pekerjaan tidak ganda dan penyumbang dapat menjadi seefektif mungkin.
Oleh sebab itu, kebijakan kami untuk penyumbang dalam "menagih" tiket agar membiarkan pengembang lain mengetahui bahwa kesalahan atau fitur tertentu sedang dikerjakan.
Jika anda telah mencirikan bantuan anda ingin membuat dan anda mampu memperbaikinya (yang diukur dengan kemampuan pengkodean anda, pengetahuan dari internal Django dan ketersediaan waktu), tagih dia dengan mengikuti langkah-langkah berikut:
Catatan
The Django software foundation requests that anyone contributing more than a trivial change to Django sign and submit a Contributor License Agreement, this ensures that the Django Software Foundation has clear license to all contributions allowing for a clear license for all users.
Sekali anda mengakui sebuah tiket, anda mempunyai tanggung jawab untuk bekerja pada tiket tepat waktu. Jika anda tidak mempunyai waktu untuk bekerja padanya, salah satu batalkan pengakuannya atau jangan mengakuinya di tempat pertama!
Jika tidak ada tanda kemajuan pada tiket tertentu yang diakui selama seminggu atau dua minggu, pengembang lain mungkin meminta anda melepaskan pengakuan tiket sehingga itu tidak lagi dikuasai dan seseorang lain dapat mengakuinya.
Jika anda telah mengakui tiket dan itu memakan waktu lama (harian atau mingguan) untuk membuat kode, jaga semua orang terperbaharui dengan menempatkan komentar pada tiket. Jika anda tidak menyediakan pembaharuan reguler, dan anda tidak menjawab pada permintaan untuk laporan kemajuan, pengakuan anda pada tiket mungkin ditarik.
Seperti biasa, komunikasi lebih lebih baik daripada komunikasi kurang!
Going through the steps of claiming tickets is overkill in some cases.
In the case of small changes, such as typos in the documentation or small bugs that will only take a few minutes to fix, you don't need to jump through the hoops of claiming tickets. Submit your changes directly and you're done!
It is always acceptable, regardless whether someone has claimed it or not, to link proposals to a ticket if you happen to have the changes ready.
Pastikan bahwa tiap sumbangan anda lakukan memenuhi setidaknya persyaratan berikut:
When you think your work is ready to be reviewed, send a GitHub pull request. If you can't send a pull request for some reason, you can also use patches in Trac. When using this style, follow these guidelines.
git diff
..diff
; ini akan membuat pelacak tiket memberlakukan penyorotan sintaksis benar, yang tentunya sangat membantu.Tanpa memperhatikan cara anda mengajukan pekerjaan anda, ikuti langkah-langkah ini.
A "non-trivial" contribution is one that is more than a small bug fix. It's a change that introduces new Django functionality and makes some sort of design decision.
If you provide a non-trivial change, include evidence that alternatives have been discussed on the Django Forum or django-developers list.
If you're not sure whether your contribution should be considered non-trivial, ask on the ticket for opinions.
Ada sepasang alasan dimana dalam Django mungkin diusangkan:
Seperti deprecation policy gambarkan, terbitan pertama dari Django yang mengusangkan sebuah fitur (A.B
) harus memunculkan RemovedInDjangoXXWarning
(dimana XX adalah versi Django dimana fitur akan dipindahkan) ketika fitur diusangkan dipanggil. Menganggp kami mempunyai cakupan percobaan baik, peringatan ini dirubah ke kesalahan ketika running the test suite dengan peringatan diadakan: python -Wa runtests.py
. Dengan demikian, ketika menambahkan RemovedInDjangoXXWarning
anda butuh mengurangi atau mensenyapkan tiap peringatan yang dibangkitkan ketika menjalankan percobaan.
Langkah pertama adalah memindahkan tiap penggunaan dari kebiasaan diusangkan oleh Django itu sendiri. Selanjutnya anda dapat peringatan senyap di percobaan yang sebenarnya mencoba kebiasaan diusangkan dengan menggunakan penghias ignore_warnings
, antara pada tingkatan percobaan atau kelas:
Di percobaan khusus:
from django.test import ignore_warnings
from django.utils.deprecation import RemovedInDjangoXXWarning
@ignore_warnings(category=RemovedInDjangoXXWarning)
def test_foo(self): ...
Untuk kasus percobaan keseluruhan:
from django.test import ignore_warnings
from django.utils.deprecation import RemovedInDjangoXXWarning
@ignore_warnings(category=RemovedInDjangoXXWarning)
class MyDeprecatedTests(unittest.TestCase): ...
You should also add a test for the deprecation warning:
from django.utils.deprecation import RemovedInDjangoXXWarning
def test_foo_deprecation_warning(self):
msg = "Expected deprecation message"
with self.assertWarnsMessage(RemovedInDjangoXXWarning, msg) as ctx:
# invoke deprecated behavior
...
self.assertEqual(ctx.filename, __file__)
It's important to include a RemovedInDjangoXXWarning
comment above code
which has no warning reference, but will need to be changed or removed when the
deprecation ends. This could include hooks which have been added to keep the
previous behavior, or standalone items that are unnecessary or unused when the
deprecation ends. For example:
import warnings
from django.utils.deprecation import RemovedInDjangoXXWarning
# RemovedInDjangoXXWarning.
def old_private_helper():
# Helper function that is only used in foo().
pass
def foo():
warnings.warn(
"foo() is deprecated.",
category=RemovedInDjangoXXWarning,
stacklevel=2,
)
old_private_helper()
...
Akhirnya, ada sepasang pembaharuan ke dokumentasi Django untuk dibuat:
.. deprecated:: A.B
. Termasuk gambaran pendek dan catatan tentang jalur peningkatan jika berlaku.docs/releases/A.B.txt
) dibawah kepala "Fitur-fitur diusangkan dalam A.B".docs/internals/deprecation.txt
) dibawah versi yang sesuai menggambarkan kode apa akan dipindahkan.Once you have completed these steps, you are finished with the deprecation.
In each feature release, all
RemovedInDjangoXXWarning
s matching the new version are removed.
For information on JavaScript contributions, see the Tambalan JavaScript documentation.
Patches aiming to deliver a performance improvement should provide benchmarks showing the before and after impact of the patch and sharing the commands for reviewers to reproduce.
django-asv
benchmarks¶django-asv monitors the performance of Django code over time. These
benchmarks can be run on a pull request by labeling the pull request with
benchmark
. Adding to these benchmarks is highly encouraged.
Use this checklist to review a pull request. If you are reviewing a pull request that is not your own and it passes all the criteria below, please set the "Triage Stage" on the corresponding Trac ticket to "Ready for checkin". If you've left comments for improvement on the pull request, please tick the appropriate flags on the Trac ticket based on the results of your review: "Patch needs improvement", "Needs documentation", and/or "Needs tests". As time and interest permits, mergers do final reviews of "Ready for checkin" tickets and will either commit the changes or bump it back to "Accepted" if further work needs to be done. If you're looking to become a merger, doing thorough reviews of contributions is a great way to earn trust.
Looking for a patch to review? Check out the "Patches needing review" section of the Django Development Dashboard.
Looking to get your pull request reviewed? Ensure the Trac flags on the ticket are set so that the ticket appears in that queue.
make html
, atau make.bat html
pada Windows, dari direktori docs
)?docs/releases/A.B.C.txt
? Bug fixes that will be applied only to the main
branch don't need a release note.docs/releases/A.B.txt
?.. versionadded:: A.B
atau .. versionchanged:: A.B
?Lihat panduan Mengusangkan fitur.
black
, blacken-docs
, flake8
, or
isort
errors? You can install the pre-commit hooks to automatically catch these errors.docs/releases/A.B.txt
)?Sep 16, 2024