Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ef3ff9e

Browse filesBrowse files
authored
Migrando o projeto para usar cookicutter (#42)
* Atualizando a lista de dependencias, onde algumas possuiam falha de segurança(segundo safety) * Atualizando pre-commit.config * Melhoria na documentação(README) * cookiecutter parte 1 * Moving projet to cookiecutter * Migrando para cookiecutter * terminando mais alguns detalhes para já adicionar os nomes na documentaçõa do sphinx * Adicionando um readme basico de como usar. * adicionando alguns detalhes para explicar o output do projeto * Adicionando ds_store no gitignore * Adicionando o release drafter na raiz do projeto tambem
1 parent c56bb5b commit ef3ff9e
Copy full SHA for ef3ff9e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Dismiss banner
Expand file treeCollapse file tree

58 files changed

+508
-145
lines changed

‎.bandit

Copy file name to clipboardExpand all lines: .bandit
-3Lines changed: 0 additions & 3 deletions
This file was deleted.

‎.github/pull_request_template.md

Copy file name to clipboard
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Descrição da mudança
2+
(Escreva uma pequena descrição do problema e/ou funcionalidade)
3+
4+
# Passos para um QA Manual
5+
-
6+
7+
# Riscos
8+
-
9+
10+
# Passo a passo para reverter
11+
- Resetar a branch

‎.gitignore

Copy file name to clipboardExpand all lines: .gitignore
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,4 @@ dmypy.json
122122

123123
# IDE's
124124
.idea
125+
.DS_Store

‎README.md

Copy file name to clipboard
+72-118Lines changed: 72 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1,137 +1,91 @@
1-
# Python Boilerplate
1+
# Python Boilerplate Cookiecutter
22

3-
A ideia desse projeto é já ser um "start" para seu projeto python. O que temos aqui são configurações pré prontas para que você possa se dedicar inteiramente ao código do seu projeto.
3+
## Como usar?
44

5+
Primeiramente garanta que você tem o cookiecutter instaaldo no seu PATH.
56

6-
## Pipfile
7-
8-
O Pipfile já tráz algumas dependencias de desenvolvimento, como:
9-
10-
```
11-
asynctest = "==0.12.1"
12-
pytest = "==6.1.2"
13-
pytest-cov = "==2.10.1"
14-
pytest-mock = "==3.3.1"
15-
codecov = "==2.0.17"
16-
mypy = "==0.782"
17-
black = "==19.10b0"
18-
isort = "==5.1.4"
19-
lxml = "==4.6.2"
20-
sphinx = "==3.2.1"
21-
sphinx-issues = "==1.2.0"
22-
sphinx-intl = "==2.0.1"
23-
safety = "==1.9.0"
24-
flake8 = "==3.8.4"
25-
flake8-bugbear = "==20.11.1"
26-
bandit = "==1.6.3"
27-
pre-commit = "==2.9.2"
7+
```shell
8+
sudo pip install cookiecutter
289
```
2910

30-
O Pipfile já vem com alguns scripts que ajudam nas tarefas do dia a dia e nas checagens do CI.
31-
32-
- ``pipenv run test``
33-
34-
Roda os testes do projeto. Esse script está configurado para medir a cobertura do pacote ``myproj``. Esse pacote deve ser ajustado para o pacote onde seu código vai ficar.
35-
36-
- ``pipenv run lint``
37-
38-
Roda o ``mypy`` para fazer checagem estática de tipos no código.
39-
40-
- ``pipenv run fmt`` e ``pipenv run fmt-check``
41-
42-
Roda o black para formatar o código. O comando ``pipenv run fmt-check`` apenas checa se alguma formatação seria necessária. É útil para rodar no processo de CI.
43-
44-
- ``pipenv run isort`` e ``pipenv run isort-check``
45-
46-
Formata o código ordenando os imports usando o projeto isort. O comando ``pipenv run isort-check`` apenas checa se algum import precisa ser reformatado. É útil para rodar no processo de CI.
47-
48-
49-
# Pre-commit Hooks
50-
51-
Ao instalar o `pre-commit`, todas as vezes que realizar um novo commit, será checado todos os pontos de qualidade do
52-
codigo, como codestyle, testes, imports e por aí vai.
53-
54-
Os comandos abaixo devem ser executados apenas quando é feito o clone do projeto.
11+
e então crie o seu projeto.
5512

5613
```shell
57-
pre-commit install
58-
pre-commit install --hook-type pre-puh
14+
cookiecutter https://github.com/sixcodes/python-boilerplate.git
5915
```
6016

61-
# CI/CD
62-
63-
Esse repositorio já possui alguns workflows do Github Actions pré-configurados. Os workflows são:
64-
65-
- `.github/workflows/pull-request.yaml`
66-
67-
Esse workflow roda em cada PR aberto no projeto. Roda os testes em múltiplas versões do python e faz checagem de formatação de código, lint (com mypy) e formatação de imports (com isort).
68-
69-
Esse workflow faz também upload do relatório de coverage para o [codeclimate](https://codeclimate.com). Perceba que o upload é feito em apenas um versão do python, isso porque o codeclimate rejeita múltiplos upload para um mesmo commit, então precisamos escolher uma das rodadas de teste para fazer o upload.
70-
71-
Para que o upload para o codeclimate funciona você precisa criar um token no CodeClimate e colocar esse token como um secret no seu repositório. O Nome do secret **deve ser**: ``CC_TEST_REPORTER_ID``. Mais sobre a documentação do codeclimate com githubactions: https://docs.codeclimate.com/docs/github-actions-test-coverage
17+
Após executar o comando acima, você receberá um questionario para responder de acordo com os dados do seu projeto.
7218

73-
## Changelog Automático
19+
As opções estão descritas no arquivo `cookiecutter.json`.
7420

75-
Esse projeto já vem com o [release-drafter](https://github.com/release-drafter/release-drafter) configurado. Dessa forma, a cada PR megeado na branch [``main``](https://github.blog/changelog/2020-10-01-the-default-branch-for-newly-created-repositories-is-now-main/) (e também na ``master`` para repositório legados) uma Release Draft será atualizada mencionando esse PR.
21+
Ao executar essas serão os inputs necessários ou apenas `enter` para aceitar o valor default.
7622

77-
Para fazer uso dessa opção, basta criar quatro labels em seu projeto:
78-
79-
- ``feature``
80-
- ``bug``
81-
- ``docs``
82-
- ``breaking-change``
83-
84-
Todos os PRs que tievem uma (ou mais) dessas labels e forem mergeados pra branch principal, uma release Draft será automaticamente atualizada.
85-
86-
Essa configuração do release-drafter também já calcula a próxima versão baseado no [SemVer](https://semver.org). A configuração é a seguinte:
87-
88-
- A label ``breaking-change`` aumenta a ``major`` version;
89-
- A label ``feature`` aumenta a ``minor`` version;
90-
- A label ``bug`` aumenta a ``patch`` version;
91-
- PR sem label também aumenta a ``patch`` version;
92-
93-
Não se esqueça de de ajustar o links para o seu projeto no arquivo ``.github/release-drafter.yml``.
94-
95-
# Pydantic - Configuração baseada em variáveis de ambiente
96-
97-
Para facilitar na criação de um novo serviço e seguindo as boas práticas definidas no [12factors](https://12factor.net/config) sobre configurações.
98-
Adicionamos o uso no pydantic para criar e validar essas informações para nós.
99-
100-
Exemplo de uso:
101-
102-
```python
103-
from config import settings
104-
105-
print(settings.DEBUG)
106-
```
107-
108-
Para configurar uma variável de ambiente é necessário ficar atento ao prefixo.
109-
o default do projeto verificar inicialmente para uma variável de ambiente chamada `NAMESPACE`caso não a
110-
encontre o prefixo será `DEV_`, o que isso significa?
111-
112-
O uso ficará da seguinte forma quando configuramos o namespace sempre adicionaremos o prefixo no
113-
momento de exportar as variaveis de ambiente.
23+
```shell
24+
> cookiecutter https://github.com/sixcodes/python-boilerplate.git
25+
project_name [e.g. 'six-toolbox']: sixcodes
26+
package_name [sixcodes]:
27+
package_version [0.0.1]:
28+
short_description [Great python package]:
29+
author [Jesue Junior]: Test boilerplate
30+
author_email [opensource@sixcodes.com]:
31+
author_username [sixcodes]:
32+
url [https://github.com/sixcodes/sixcodes]:
11433

115-
```python
116-
NAMESPACE=PROD PROD_DEBUG=False python main.py
11734
```
11835

119-
Caso não definimos nenhum namespace, o prefixo será `DEV`, ou seja
36+
A estrutura do seu projetode pastas e arquivos com esse template será:
12037

121-
```python
122-
DEV_REDIS_PORT=1234 python main.py
38+
```shell
39+
sixcodes
40+
|-- CODE_OF_CONDUCT.md
41+
|-- LICENSE
42+
|-- Pipfile
43+
|-- Pipfile.lock
44+
|-- README.md
45+
|-- docs
46+
| |-- _sources
47+
| | `-- index.rst.txt
48+
| |-- _static
49+
| | |-- _stemmer.js
50+
| | |-- alabaster.css
51+
| | |-- basic.css
52+
| | |-- custom.css
53+
| | |-- doctools.js
54+
| | |-- documentation_options.js
55+
| | |-- file.png
56+
| | |-- jquery-3.5.1.js
57+
| | |-- jquery.js
58+
| | |-- language_data.js
59+
| | |-- minus.png
60+
| | |-- plus.png
61+
| | |-- pygments.css
62+
| | |-- searchtools.js
63+
| | |-- translations.js
64+
| | |-- underscore-1.3.1.js
65+
| | `-- underscore.js
66+
| |-- genindex.html
67+
| |-- index.html
68+
| |-- objects.inv
69+
| |-- search.html
70+
| `-- searchindex.js
71+
|-- docs-src
72+
| |-- Makefile
73+
| |-- _static
74+
| |-- conf.py
75+
| `-- index.rst
76+
|-- mypy.ini
77+
|-- pyproject.toml
78+
|-- setup.py
79+
|-- sixcodes
80+
| |-- __init__.py
81+
| `-- config.py
82+
`-- tests
83+
|-- test_config.py
84+
`-- test_true.py
85+
86+
7 directories, 38 files
12387
```
12488

125-
Lembrando que dentro da sua aplicação o que vale é justamente o nome que foi definido no arquivo config.py, sem o prefixo.
126-
127-
128-
129-
# Sphinx Docs
130-
131-
Esse repositório tem o sphinx configurado. Isso premite escrever a documentação do seu projeto e até mesmo usar o Github Pages para hospedá-la.
132-
133-
Antes de começar a usar, ajuste as variáveis no início do arquivo ``docs-src/conf.py``. A documentação, em formato html, é gerada na pasta ``docs/``.
134-
135-
Para gerar a documentação basta rodar: ``pipenv run make-docs``.
89+
## Como ajudar?
13690

137-
Para conseguir gerar a documentação é preciso ter o ``make`` instalado.
91+
TODO

‎cookiecutter.json

Copy file name to clipboard
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"project_name": "e.g. 'six-toolbox'",
3+
"package_name": "{{cookiecutter.project_name.replace('-','_')}}",
4+
"package_version": "0.0.1",
5+
"short_description": "Great python package",
6+
"author":"Jesue Junior",
7+
"author_email": "opensource@sixcodes.com",
8+
"author_username": "sixcodes",
9+
"url": "https://github.com/{{cookiecutter.author_username}}/{{cookiecutter.project_name}}",
10+
"_copy_without_render": [".github/*.yaml", "docs"]
11+
}

‎myproj/__init__.py

Copy file name to clipboardExpand all lines: myproj/__init__.py
-2Lines changed: 0 additions & 2 deletions
This file was deleted.

‎{{cookiecutter.project_name}}/.bandit

Copy file name to clipboard
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[bandit]
2+
targets = {{cookiecutter.project_name}}/
3+
skips = B101
File renamed without changes.
File renamed without changes.

‎.flake8 renamed to ‎{{cookiecutter.project_name}}/.flake8

Copy file name to clipboardExpand all lines: {{cookiecutter.project_name}}/.flake8
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ ignore = E203, E266, E501, W503
33
max-line-length = 88
44
max-complexity = 18
55
select = C,E,F,W,B
6-
filename = myproj/*.py
6+
filename = {{cookiecutter.project_name}}/*.py
File renamed without changes.
+29Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
categories:
2+
- title: 'Mudanças incompatíveis'
3+
label: 'breaking-change'
4+
- title: 'Bugs Resolvidos'
5+
label: 'bug'
6+
- title: 'Novas Features'
7+
label: 'feature'
8+
- title: 'Documentação'
9+
label: 'docs'
10+
change-template: '- #$NUMBER $TITLE (@$AUTHOR)'
11+
version-resolver:
12+
major:
13+
labels:
14+
- 'breaking-change'
15+
minor:
16+
labels:
17+
- 'feature'
18+
patch:
19+
labels:
20+
- 'bug'
21+
default: patch
22+
template: |
23+
## Changelog for $RESOLVED_VERSION
24+
25+
$CHANGES
26+
27+
Docs: https://github.com/sixcodes/python-boilerplate
28+
Commits: https://github.com/sixcodes/python-boilerplate/compare/$PREVIOUS_TAG...$RESOLVED_VERSION
29+
Tag: https://github.com/sixcodes/python-boilerplate/releases/tag/$RESOLVED_VERSION

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.