https://github.com/fabiocasadossites/python-curso-fastapi
Curso de Fastapi com python, feito no canal do youtube Eduardo
https://github.com/fabiocasadossites/python-curso-fastapi
fastapi poetry pytest python3 taskipy
Last synced: 5 months ago
JSON representation
Curso de Fastapi com python, feito no canal do youtube Eduardo
- Host: GitHub
- URL: https://github.com/fabiocasadossites/python-curso-fastapi
- Owner: fabiocasadossites
- Created: 2024-08-17T20:24:14.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-26T21:30:00.000Z (over 1 year ago)
- Last Synced: 2025-01-22T22:46:28.160Z (12 months ago)
- Topics: fastapi, poetry, pytest, python3, taskipy
- Language: Python
- Homepage:
- Size: 157 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Curso de FastAPI
Curso de Fastapi com python, feito no canal do youtube Eduardo
Material em texto: https://fastapidozero.dunossauro.com/
Repositório no GIT: https://github.com/dunossauro/fastapi-do-zero
Grupo no Telegram do curso: https://t.me/fastapicomdunossauro
### Ferramentas
- pyenv - https://github.com/pyenv/pyenv
- pipx - https://github.com/pypa/pipx
- poetry - https://python-poetry.org/
- ignr - https://github.com/Antrikshy/ignr.py
- gh - https://github.com/cli/cli#installation
### Versão
- python = "3.12.*"
- fastapi = "^0.112.1"
### Criando ambiente virtual
Dentro da pasta do projeto execute no mesmo local que está o arquivo pyproject.toml.
````
poetry install
````
Para ativar o venv o ambiente virtual, faça isso dentro da raiz do projeto, utilize:
````
poetry shell
````
### Comando de execução
Estas configurações estão dentro do arquivo pyproject.toml
Para executar o fastapi
````
task run
````
Rodar o linter
````
task lint
````
Rodar a formatação do código
````
task format
````
Rodar o pré-teste
````
task pre_test
````
Rodar os testes
````
task test
````
Criar o arquivo em html dos testes
````
task post_test
````
### Dependências
Fastapi - https://fastapi.tiangolo.com/
````
poetry add fastapi
````
Ruff linter de código - https://docs.astral.sh/ruff/
````
poetry add --group dev ruff
````
Pytest, framework de teste em python - https://docs.pytest.org/en/stable/
````
poetry add --group dev pytest pytest-cov
````
Taskipy, framework de criação de comandos - https://github.com/taskipy/taskipy
````
poetry add --group dev taskipy
````
Sqlalchemy, ORM banco de dados - https://www.sqlalchemy.org/
````
poetry add sqlalchemy
````
Pydantic, configurações de banco de dados - https://docs.pydantic.dev/latest/
````
poetry add pydantic-settings
````
Alembic, migration de banco de dados - https://alembic.sqlalchemy.org/en/latest/
````
poetry add alembic
````
- Iniciando o local das migrações(só precisa rodar uma única vez):
````
alembic init migrations
````
- Gerar os comandos para criar uma migração
````
alembic revision --autogenerate -m "create table"
````
- Gerar uma migração depois que atualizar o comando acima para atualizar o códigos das tabelas.
````
alembic upgrade head
````
Pwdlib, Criptador de senhas - https://frankie567.github.io/pwdlib/
````
poetry add "pwdlib[argon2]"
````
Para autenticar precisa nas tempendencias do FastAPI dessa biblioteca para poder utilizar o OAuth2PasswordRequestForm
````
poetry add python-multipart
````
JWT, Criação de tokens - https://pyjwt.readthedocs.io/en/stable/ e https://jwt.io/
````
poetry add pyjwt
````
Factory-boy, Fabrica de modeles - https://factoryboy.readthedocs.io/en/stable/
````
poetry add --group dev factory_boy
````
Freezegun, Para o tempo para fazer testes de tempo - https://github.com/spulec/freezegun
````
poetry add --group dev freezegun
````
Psycopg, Driver, para usar com o banco de dados postgres - https://www.psycopg.org/
````
poetry add "psycopg[binary]"
````
Testcontainers, Criar containes para teste - https://testcontainers-python.readthedocs.io/en/latest/
````
poetry add --group dev testcontainers
poetry add --group dev httpx
````
Instalando act para rodar o CI na máquina local
https://nektosact.com/introduction.html
### Helps
Derubar as portas caso estajam ocupadas:
````
sudo lsof -t -i tcp:8000 | xargs kill -9
````
Caso der erro no .env delete e instale novamente
````
poetry env remove --all
````