Skip to content

Latest commit

 

History

History
242 lines (180 loc) · 9.5 KB

README.rst

File metadata and controls

242 lines (180 loc) · 9.5 KB

EY Logo


cookiepy



Author:Erik Ingwersen
Contact:[email protected]
organization:EY DDA
date:2022-09-09 (Thu, 09 Sep 2022)
status:Pre-Alpha
version:0.1.0
copyright:Copyright (c) EY Brazil, Inc. and its affiliates. All Rights Reserved.
abstract:Cookiecutter para o Acelerador de projetos EY DDA.

Descrição

Cookiecutter para automação da criação de repositório Python para projetos.

⚠️ Importante: Esta ferramenta assume que você tenha um conhecimento prévio de como criar pacotes em Python e, como usar ferramentas de versionamento de código (GitHub, Bitbucket, Gitlab, etc.).

Documentação do Projeto

✨📚✨ Link para documentação


Quickstart

O cookiepy requer instalação prévia do pacote cookiecutter. Execute o seguinte comando para instalar o cookiecutter:

$ pip install cookiecutter

💡 Observação: caso você não consiga executar o comando acima, tente executar novamente, incluindo a opçao -U, ou --user:

$ pip install -U cookiecutter
# Mesmo que:
$ pip install --user cookiecutter

Alguns sistemas operacionais restringem a instalação de certos pacotes. A opção --user força a instalação do pacote somente para o seu usuário. Em geral, aplicações que são instaladas dentro do diretório de usuário requerem um nível menor de permissões. Muitas vezes, erros de falta de permissão são solucionados, quando você realiza a instalação de aplicações a nível de usuário, ao invés de global. Esse tipo de bloqueio ocorre com bastante frequência no Windows, especialmente em ambientes corporativos.

Com o cookiecutter instalado, basta executar o seguinte comando:

$ cookiecutter gh:ingwersen-erik/cookiepy

Exemplo de Uso do cookiepy

O vídeo abaixo mostra o processo de criação de um novo projeto, utilizando o cookiepy:

Demo


Funcionalidades

O pacote gerado pelo cookiepy possui as seguintes funcionalidades pré-configuradas:

  • Gerenciamento e empacotamento de pacotes, usando Poetry
  • Automação de testes unitários, usando Nox
  • Avaliação de qualidade do seu código durante o commit_, usando Flake8
  • Serviços de CI/CD, com ações pré-configuradas, usando GitHub Actions
  • Automação do processo de geração de documentação do seu código-fonte usando Sphinx, MyST, e Read the Docs
  • Criação automática de change-logs, usando Release Drafter
  • Atualização automática de dependências com Dependabot
  • Formatação do código usando Black e Prettier
  • Ordenação e validação de imports dos módulos do seu código, com o isort
  • Relatório de cobertura de código (coverage), usando Codecov
  • Análise estática e type-hints com mypy
  • Análise dinâmica de type-hints, com Typeguard
  • Mudanças de sintaxe, de acordo com a versão do Python configurada pelo usuário, usando pyupgrade
  • Análise estática de segurança com Bandit e Safety
  • Validação de exemplos de código escritos na documentação com xdoctest
  • Gerenciamento de labels de repositório com GitHub Labeler

Esta ferramenta foi testada nas seguintes versões do Python: Python 3.7, 3.8, 3.9, e 3.10.


Informações Adicionais

Estrutura do repositório

O cookiepy possui a seguinte estrutura de pastas:

cookiepy
├── CODE_OF_CONDUCT.rst             <- Código de conduta (copiado de outros templates).
├── CONTRIBUTING.rst                <- Guia de contribuição. Está em inglês.
├── LICENSE.rst                     <- Licença do projeto (por enquanto está como MIT)
├── README.rst                      <- Este arquivo que você está lendo.
├── cookiecutter.json               <- Arquivo com os parâmetros utilizado pelo cookiepy para gerar novos repositórios
├── docs                            <- Diretório com a documentação da ferramenta.
├── noxfile.py                      <- Arquivo nox com as configurações de testes unitários.
├── pycharm.sh                      <- Comando Mac/Linux para inicialização do PyCharm (se instalado).
├── pyproject.toml                  <- Arquivos com as configurações e dependencias da ferramenta.
├── tools                           <- scripts para automação CI/CD.
│   ├── dependencies_table.py       <- Script analisa os scripts Python do projeto e gera uma tabela de dependências.
│   ├── prepare_github_release.py   <- Script de preparação de novas releases.
│   └── publish_github_release.py   <- Script de publicação de releases em repositório do GitHub.
├── hooks                           <- Diretório com os arquivos utilizados para criação do repositório.
│   ├── post_gen_project.py         <- Script executado após a geração do repositório.
│   └── pre_gen_project.py          <- Script executado antes da geração do repositório.
└── {{cookiecutter.project_name}}   <- Template do pacote que será criado.

TO-DO 🚧

  • [ ] Traduzir o template para português 🇧🇷. Inicialmente, a minha ideia era criar o cookiecutter em inglês, já que a maioria das empresas preferem que o código seja escrito em inglês.
  • [ ] Melhorar os tutoriais de como instalar/usar o cookiepy. :basecamp:
  • [ ] Adicionar tutoriais, com melhores práticas, dicas e casos-de-uso da ferramenta. 💡