Nós estamos sempre gratos por patches para o código do Django. De fato, relatos de bugs com um respectivo patch serão corrigidos muito mais rápido do que os bugs relatados sem um patch.
Se você está corrigindo um problema realmente trivial, por exemplo, mudando uma palavra na documentação, a melhor maneira de providenciar o patch é usando um pull request sem um ticket no Trac associado.
Veja a Trabalhando com Git e GitHub para mais detalhes sobre como usar os pull requests.
Em um projeto open-source com voluntários espalhados por todo o mundo, é importante gerenciar a comunicação de forma eficiente de modo que o trabalho não seja duplicado e voluntários possam ser o mais eficiente quanto possível.
Por tanto, nossa política é que os voluntários “reinvindiquem” os tickets de modo a permitir que os desenvolvedores do projeto saibam que aquele bug em específico ou funcionalidade está sendo atendida.
Se você identificou uma contribuição que você gostaria de fazer e se você é capaz de fazer essa correção (capacidade aqui mensurada pelas suas abilidades para programar, conhecimento de como o Django funciona internamente e tempo disponível), reinvindique ele seguindo os passos abaixo:
Nota
A Django Software Foundation requer que todas as contribuições maiores que um patch trivial assinem e enviem o Contributor License Agreement, isso garante que a Django Software Foundation tenha a licença para todas as contribuições permitindo assim uma licença limpa para todos os usuários.
Quando você reinvindicar um ticket, você terá a responsabilidade de trabalhar nele em uma quantidade de tempo razoável. Se você não tem tempo para trabalhar nele, ou abra mão dele ou nem se quer faça a reinvindicação do ticket em primeiro lugar!
Se não existir sinal de progresso em um ticket reinvindicado em particular por uma semana ou duas, outros desenvolvedores podem pedir para você abrir mão da reinvindicação do ticket de modo que ele não esteja mais monopolizado e alguém mais possa reinvindicá-lo novamente.
Se você reinvindicou um ticket e está demorando um bom tempo (dias ou semanas) para programar, mantenha todo mundo atualizado postando comentários no ticket. Se você não fornecer atualizações regulares, e você não responder a um pedido por relatório de progresso, a sua reinvindicação ao ticket poderá ser revogada.
Como sempre, mais comunicação é melhor do que menos comunicação.
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 patch directly and you’re done!
It is always acceptable, regardless whether someone has claimed it or not, to submit patches to a ticket if you happen to have a patch ready.
Certifique-se de que qualquer contribuição que você fizer preencha pelo menos os requisitos abaixo:
Quando você achar que o seu trabalho está pronto para ser revisado, envie um pull request pelo GitHub. Por favor revise o ptch você mesmo usando nossa checklist de revisão de patchs primeiro.
Se você não pode enviar um pull request por alguma razão, você também pode usar patches dentro do Trac. Quando usar esse estilo, siga as orientações a seguir:
git diff
..diff
; isso permitirá que o rastreador de tickets aplique o estilo de formatação de sintaxe correto, o que ajuda muito.Independentemente da maneira pela qual você irá enviar o seu trabalho, siga os passos a seguir:
A “non-trivial” patch is one that is more than a small bug fix. It’s a patch that introduces Django functionality and makes some sort of design decision.
Se você estiver enviando um patch não trivial, inclua evidências de que alternativas foram discutidas na lista django-developers.
If you’re not sure whether your patch should be considered non-trivial, ask on the ticket for opinions.
There are a couple of reasons that code in Django might be deprecated:
As the deprecation policy describes,
the first release of Django that deprecates a feature (A.B
) should raise a
RemovedInDjangoXXWarning
(where XX is the Django version where the feature
will be removed) when the deprecated feature is invoked. Assuming we have good
test coverage, these warnings are converted to errors when running the
test suite with warnings enabled:
python -Wa runtests.py
. Thus, when adding a RemovedInDjangoXXWarning
you need to eliminate or silence any warnings generated when running the tests.
O primeiro passo é remover qualquer uso do comportamento depreciado no próprio Django. Depois você pode silenciar os warnings nos testes que testam o comportamento depreciado usando o decorator ignore_warnings
, na classe ou diretamente nos testes:
Em um teste em particular:
from django.test import ignore_warnings
from django.utils.deprecation import RemovedInDjangoXXWarning
@ignore_warnings(category=RemovedInDjangoXXWarning)
def test_foo(self):
...
Para um caso de teste inteiro:
from django.test import ignore_warnings
from django.utils.deprecation import RemovedInDjangoXXWarning
@ignore_warnings(category=RemovedInDjangoXXWarning)
class MyDeprecatedTests(unittest.TestCase):
...
You can 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):
# invoke deprecated behavior
Finalmente, existem algumas atualizações na documentação do Django para fazer:
.. deprecated:: A.B
. Inclua uma curta descrição e uma nota sobre o caminho para atualizar se possível.docs/releases/A.B.txt
) abaixo do header “Features deprecated in A.B”.docs/internals/deprecation.txt
) abaixo da versão apropriada descrevendo qual código será removido.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.
para informação sobre patches em JavaScript, veja a documentação Patches JavaScript .
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 patch or bump it back to “Accepted” if further works need to be done. If you’re looking to become a merger, doing thorough reviews of patches is a great way to earn trust.
Procurando um patch para revisar? Veja a seção “Patches needing review” do Django Development Dashboard. Querendo que o patch que você desenvolveu seja revisado? Certifique-se de que as flags do ticket no Trac foram setadas corretamente de modo que ele apareça nessa fila.
make html
, ou make.bat html
no Windows, do diretório 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
ou .. versionchanged:: A.B
?Veja o guia depreciando uma funcionalidade.
black
, flake8
, or isort
errors? You
can install the pre-commit hooks to
automatically catch these errors.docs/releases/A.B.txt
)?AUTHORS
e envie um Contributor License Agreement.ago. 03, 2022