Skip to content

Template para desenvolvimento de uma aplicaçao em python e postgres utilizando docker.

Notifications You must be signed in to change notification settings

CarduCaldeira/template-python-postgres

Repository files navigation

Este repositório tem como objetivo criar um ambiente de desenvolvimento em python, postgres, poetry, testes, formatadores e documentação em um container.

Ao subir o postgres, o script data/start.sql será executado (só é executado a primeira vez que o container é executado, além disso, se já existir o database em que o script realiza as queries, o script é ignorado).

No diretório docker/envs/ são configurados os parâmetros necessários para construçao de cada container. Para exeutar os containers, basta duplicar os arquivos removendo o ".example" da cada um deles. O diretório deve ficar com a seguinte estrutura

  docker
    envs
      󰈚 db.env
      󰈚 db.env.example
      󰈚 pgadmin.env
      󰈚 pgadmin.env.example
      󰈚 python_project.env
      󰈚 python_project.env.example

DOCKER

Para executar o container

docker compose -f docker/docker-compose.yml up -d
docker compose -f docker/docker-compose.yml exec python-project bash 

Ou rode o script

./start.sh

MKDCOS

Para gerar a documentação redirecionar a saída para um arquivo de log com o mkdocs execute o comando

mkdocs serve -a 0.0.0.0:8000 > mkdocs.log 2>&1

Para gerar a documentação automática baseada nas docstrings, insira em docs/source um arquivo .md, por exemplo insira db.md com o conteúdo

:::db

Isso automantiacamente gerará uma documentação com as docstrings do módulo source/db.py

A documentação gerada pelo mkdocs pode ver visualizada em https://carducaldeira.github.io/template-python-postgres/.

PYTEST e BANDIT

No módulo tests/conftest.py são definidas as fixtures (funções de inicialização e encerramento de contexto para os testes). Como exemplo é testado a conexão com o banco de dados. O script test_app.py é adicionado como exemplo de uso do parametrize.

Para rodar o bandit

bandit -r .

IPYTHON

Para o uso interativo para desenvolvimento foi adicionado o ipython. Para importar as funções de um script rode o seguinte exemplo:

poetry run ipython -i source/db.py

É possível rodar as funções diretamente, como por exemplo:

create_database_connection()

TASKIPY

Para simplificar os comandos foi instalado o taskipy, para os comandos definidos basta executar task , por exemplo:

task test

RUFF

Ruff é um linter e formatador, para checar o linter:

ruff check .

Para formatar:

ruff check . --fix

About

Template para desenvolvimento de uma aplicaçao em python e postgres utilizando docker.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published