Guia do Desenvolvedor Python#
Este guia é um recurso abrangente para contribuir para o Python – para colaboradores novos e experientes. É mantido pela mesma comunidade que mantém o Python. Agradecemos suas contribuições ao Python!
Referência rápida#
Aqui estão as etapas básicas necessárias para configurar e contribuir com um patch. Isso serve como uma lista de verificação, uma vez que você conheça o básico. Para obter instruções completas, consulte o guia de configuração.
Instale e configure Git e outras dependências (consulte a página Configuração do Git para obter informações detalhadas).
Faça um fork do repositório CPython para sua conta GitHub e obtenha o código-fonte usando:
git clone https://github.com/<your_username>/cpython cd cpython
Compile Python. No UNIX e macOS use:
./configure --with-pydebug && make -j
e no Windows use:
PCbuild\build.bat -e -d
Veja também instruções mais detalhadas, como instalar e compilar dependências, e as páginas específicas da plataforma para UNIX, macOS e Windows.
-
./python -m test -j3
Na maioria dos sistemas macOS, substitua
./python
por./python.exe
. No Windows, usepython.bat
. Crie um novo branch para onde irá o seu trabalho para o problema, por exemplo:
git checkout -b fix-issue-12345 main
Se um relatório de problema ainda não existir, crie-o. Problemas triviais (por exemplo, correções de erros de digitação) não exigem que um relatório de problema seja criado.
Depois de corrigir o problema, execute os testes, execute
make patchcheck
e, se tudo estiver ok, faça o commit.Faça o push do branch em seu fork no GitHub e crie uma pull request. Inclua o número do relatório de problema usando
gh-NNNN
na descrição do pull request. Por exemplo:gh-12345: Fix some bug in spam module
Adicione uma entrada News no diretório
Misc/NEWS.d
como arquivo individual. A entrada de notícias pode ser criada usando blurb-it ou a ferramenta blurb e seu comandoblurb add
. Por favor, leia mais sobreblurb
em documentação.
Nota
Os contribuidores iniciantes precisarão assinar o Contrato de Licenciamento do Colaborador (CLA) conforme descrito na seção Licenciamento deste guia.
Links rápidos#
Aqui estão alguns links que você provavelmente irá referenciar com frequência ao contribuir com o Python:
PEPs (Python Enhancement Proposals)
Contribuindo#
Incentivamos todos a contribuir com o Python e é por isso que criamos este guia do desenvolvedor. Se você ainda tiver dúvidas após revisar o material deste guia, o grupo Core Python Mentorship está disponível para ajudar a guiar novos contribuidores durante o processo.
Vários indivíduos da comunidade Python contribuíram para uma série de excelentes guias em Open Source Guides.
Os desenvolvedores core e colaboradores acharão úteis os seguintes guias:
How to Contribute to Open Source (Como contribuir para o código aberto)
Building Welcoming Communities (Criando comunidades receptivas)
Guia para contribuir com o Python:
Contribuidores |
Documentadores |
Triagers |
Desenvolvedores core |
---|---|---|---|
Recomendamos que os documentos deste guia sejam lidos conforme necessário. Você pode parar onde se sentir confortável e começar a contribuir imediatamente sem ler e entender esses documentos de uma só vez. Se você optar por pular a documentação, esteja ciente de que ela foi escrita assumindo que a documentação anterior foi lida, portanto, você pode achar necessário retroceder para preencher os conceitos e a terminologia ausentes.
Propondo mudanças no próprio Python#
Melhorar o código, a documentação e os testes do Python são tarefas contínuas que nunca serão “concluídas”, pois o Python opera como parte de um sistema de tecnologia em constante evolução. Uma tarefa contínua ainda mais desafiadora do que essas atividades de manutenção necessárias é encontrar maneiras de tornar o Python, na forma de biblioteca padrão e definição de linguagem, uma ferramenta ainda melhor no kit de ferramentas de um desenvolvedor.
Embora esses tipos de mudança sejam muito mais raros do que os descritos acima, eles acontecem e esse processo também é descrito como parte deste guia:
Outras implementações de interpretador#
Este guia é especificamente para contribuir com o interpretador de referência do Python, também conhecido como CPython (enquanto a maior parte da biblioteca padrão é escrita em Python, o núcleo do interpretador é escrito em C e se integra mais facilmente com os ecossistemas C e C++).
Existem outras implementações do Python, cada uma com um foco diferente. Como o CPython, eles sempre têm mais coisas que gostariam de fazer do que desenvolvedores para trabalhar nelas. Alguns exemplos importantes que podem ser interessantes são:
PyPy: Um interpretador Python focado em operação de alta velocidade (compilado por JIT) nas principais plataformas
Jython: Um interpretador Python focado em boa integração com o ambiente Java Virtual Machine (JVM)
IronPython: Um interpretador Python focado em boa integração com o Common Language Runtime (CLR) fornecido por .NET e Mono
Stackless: um interpretador Python focado em fornecer microthreads leves, permanecendo amplamente compatível com módulos de extensão específicos do CPython
MicroPython: Um minúsculo interpretador Python com um pequeno subconjunto da biblioteca padrão Python que é otimizado para rodar em microcontroladores e em ambientes restritos.
CircuitPython: Um fork do MicroPython projetado para simplificar a experimentação e o aprendizado da codificação em placas microcontroladoras de baixo custo.
Principais recursos#
- Código-fonte
PEPs (Python Enhancement Proposals)
Recursos adicionais#
Qualquer pessoa pode clonar os arquivos fonte deste guia. Veja Ajudando com o guia do desenvolvedor.
- Suporte a ferramentas
Várias ferramentas com arquivos de configuração encontrados no diretório Misc
Informações sobre editores e suas configurações podem ser encontradas na wiki
Código de conduta#
Observe que todas as interações na infraestrutura suportada pela Python Software Foundation estão cobertas pelo Código de Conduta da PSF, que inclui toda a infraestrutura usada no desenvolvimento do próprio Python (por exemplo, listas de discussão, rastreadores de problemas, GitHub, etc.). Em geral, isso significa que todos devem ser abertos, atenciosos e respeitosos com os outros, independentemente de sua posição dentro do projeto.
Status dos branches do Python#
Movido para Status das versões do Python
Índice completo#
- Primeiros passos
- Setup and Building
- Corrigindo issues “easy” (e além)
- Git Bootcamp e Página de Dicas
- Fazendo fork do repositório GitHub do CPython
- Clonando o repositório fork do CPython
- Configurar os controles remotos
- Listando os repositórios remotos
- Configurando seu nome e endereço de e-mail
- Habilitando o
autocrlf
no Windows - Criando e alternando branches
- Excluindo branches
- Renomeando branches
- Preparando e fazendo commit de arquivos
- Revertendo mudanças
- Fazendo stash das alterações
- Comparando alterações
- Fazendo push das alterações
- Criando uma pull request
- Vinculando a issues e pull requests
- Atualizando seu fork do CPython
- Aplicando um patch ao Git
- Baixando patches dos outros
- Aceitando e mesclando uma solicitação pull
- Fazendo backport de alterações mescladas
- Editando uma pull request antes da mesclá-la
- GitHub CLI
- Lifecycle of a Pull Request
- Where to Get Help
- Fluxo de trabalho de desenvolvimento
- Relatórios de problemas e triagem
- Issue Tracker
- Triaging an Issue
- GitHub Labels
- GitHub Issues for BPO Users
- How to format my comments nicely?
- How to attach files to an issue?
- How to link to file paths in the repository when writing comments?
- How to do advanced searches?
- Where is the “nosy list”?
- How to add issue dependencies?
- What on Earth is a “mannequin”?
- Where did the “Resolution” field go?
- Where did the “Low”, “High”, and “Critical” priorities go?
- How to find a random issue?
- Where are regression labels?
- Triage Team
- Documentação
- Testes e buildbots
- Desenvolvedores core
- Internos do CPython
- Ferramentas avançadas
- Status das versões do Python