Este é um modelo de cozinheiro para criar um projeto Python para ser distribuído no Pypi. Inclui integração com ações do GitHub, ReadThedocs.io e Coveralls.io.
A estrutura do projeto segue o padrão do projeto de demonstração de desculpas. A poesia é usada gerencia a embalagem e as dependências do Python, e a maioria das tarefas diárias (como execução de testes de unidade na linha de comando) são orquestradas através da poesia usando meu trabalho de quadro-run-script. Um padrão de codificação é aplicado usando preto, isort e pylint. A sugestão do tipo Python 3 é validada usando o mypy. O fluxo de trabalho das ações do GitHub é uma construção de matriz implementada usando meus fluxos de trabalho compartilhados GHA. Também existem ganchos de pré-compromisso para aplicar as verificações do estilo de código. Um arquivo gerado DEVELOPER.md fornece notas sobre como o código está estruturado, como configurar um ambiente de desenvolvimento etc.
Para usar este modelo, você precisa instalar Cookiecutter:
pip install cookiecutter
O projeto resultante depende da ferramenta de construção de poesia. Você precisa instalar apenas um intérprete Python 3 e poesia. A própria poesia cuida de todo o resto. Veja as instruções.
O processo do desenvolvedor descrito no arquivo DEVELOPER.md resultante. No Windows, espera -se que você use o emulador Git Bash instalado com o GIT para Windows.
Por padrão, o processo de liberação no fluxo de trabalho gerado .github/workflows/test-suite.yml é configurado para publicar artefatos, anexando-os a uma liberação no repositório do GitHub. (O arquivo Gerado DEVELOPER.md contém instruções.) Opcionalmente, você também pode publicar no PYPI. Para fazer isso, crie uma conta na Pypi para si mesmo e registre seu projeto. Depois que o projeto existir, vá para as configurações da sua conta do Pypi e crie um token de API com permissões de upload para o novo projeto. No seu repositório do GitHub, adicione uma ação do GitHub em segredo chamada PYPI_TOKEN para segurar o token. Em seguida, ajuste test-suite.yml para definir publish-pypi: true .
Use cookiecutter para executar o modelo:
cookiecutter gh:pronovic/cookiecutter-pypi
Quando solicitado, forneça valores para todos os parâmetros do modelo:
project_slug [sample-project]:
project_name [Sample Project]:
short_description [Short description]:
author_name [First Last]:
author_email [[email protected]]:
github_owner [owner]:
github_repo [samplerepo]:
default_branch [master]:
package [sample]:
python_version [>=3.9,<4]:
black_target ['py39', 'py310']:
copyright_year [2022]:
O projeto é o nome do diretório resultante; portanto, neste exemplo, o projeto será gerado no sample-project :
cd sample-project
Em seguida, inicialize o repositório Git:
git init . && git add . && git commit -m "Initial revision based on pronovic/cookiecutter-pypi"
Supondo que você já tenha instalado poetry (de acordo com as instruções), você pode iniciar as coisas usando o script run . Primeiro, instale as dependências e configure os ganchos de pré-compromisso:
./run install
Finalmente, execute a suíte de teste:
./run suite
Supondo que a suíte de teste passa, você terá que verificar poetry.lock com a versão atual de todas as dependências:
git add poetry.lock && git commit -m "Add initial poetry.lock" poetry.lock
Em seguida, você pode empurrar para o seu repositório e testar o processo de ações do GitHub.
Nota: Para ver quais outros comandos estão disponíveis, use
./run --help. Consulte o arquivo geradoDEVELOPER.mdpara obter mais informações sobre o ambiente de desenvolvimento, incluindo integração com PyCharm, etc.
Você precisará ajustar manualmente manualmente .github/workflows/test-suite.yml para refletir as plataformas e as versões Python que deseja testar. O fluxo de trabalho sugerido executa uma criação de matriz no Linux para todas as versões Python suportadas e uma construção no Windows e no MacOS apenas para a versão mais recente do Python. Nas ações do GitHub, os corredores do Linux são muito mais rápidos e confiáveis; portanto, essa estratégia parece produzir os melhores resultados.