Skip to main content

📟 FastAPI Calculator + Calculator-Lib

Projeto completo usando Python, FastAPI, Docker, GitHub Packages e GitHub Actions!


📚 O que esse projeto faz?

  • calculator-lib: biblioteca Python de operações matemáticas básicas.
  • fastapi-calculator: serviço FastAPI que usa a calculator-lib para cálculos.
  • CI/CD Automático: testes → build → publicação no GitHub Packages → build da API → publicação da imagem Docker.

⚙️ Fluxo de CI/CD (GitHub Actions)

  1. Testa a biblioteca calculator-lib
  2. Publica a biblioteca no GitHub Packages
  3. Testa o serviço fastapi-calculator
  4. Builda e publica o container Docker no GitHub Container Registry (ghcr.io)

✅ Cada etapa depende da anterior para garantir a qualidade!


📦 Instalação local

📚 1. Instalar a biblioteca calculator-lib

Se publicada no PyPI ou GitHub Packages:

pip install calculator-lib

Se localmente:

python -m pip install .

🚀 2. Rodar o serviço FastAPI

Instale as dependências:

python -m pip install -r requirements.txt

Suba a API:

uvicorn app.main:app --reload

Acesse: 👉 http://localhost:8000/docs


🐳 Rodar usando Docker e Docker Compose

📋 Buildar e rodar

make docker-build     # Builda a imagem usando docker compose
make docker-up        # Sobe o serviço

ou em modo detached:

make docker-up-detached

Para derrubar:

make docker-down

Para limpar tudo (imagens, volumes):

make docker-clean

🛠️ Makefile: Comandos úteis

Comando Ação
make install Instalar dependências da API
make install-lib Instalar calculator-lib
make install-dev Instalar ferramentas de desenvolvimento
make test-lib Testar a biblioteca
make test-app Testar a API
make build-lib Buildar lib tradicional (setup.py)
make build-modern Buildar lib moderno (python -m build)
make publish-lib Publicar lib (quando configurado)
make docker-build Buildar imagem Docker via Compose
make docker-up Subir serviço Docker
make docker-up-detached Subir serviço em background
make docker-down Derrubar containers
make docker-clean Limpar containers, imagens, volumes

📚 Publicação manual da calculator-lib

🛠️ Passo a passo

  1. Instalar ferramentas de build:
make install-dev

Ou diretamente:

python -m pip install build twine wheel
  1. Buildar a lib:
make build-modern

ou

python -m build

Isso vai gerar a pasta dist/ contendo .tar.gz e .whl.

  1. Publicar no GitHub Packages (ou PyPI)

Se configurado para GitHub Packages:

python -m twine upload dist/*

Lembre-se de configurar seu .pypirc e usar o GITHUB_TOKEN ou TWINE_USERNAME/TWINE_PASSWORD.


📂 Estrutura do Projeto

fastapi-calculator/
├── app/
│   ├── main.py
│   ├── models.py
├── calculator_lib/
│   ├── __init__.py
│   └── operations.py
├── tests/
│   └── test_main.py
├── tests_lib/
│   └── test_operations.py
├── docker-compose.yml
├── Dockerfile
├── Makefile
├── README.md
├── setup.py
├── pyproject.toml
└── .github/
    └── workflows/
        └── test-and-deploy.yml

testando a lib de novo!!!!!!!

Metadata

Release files for calculadora-saraiva-lib 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for calculadora-saraiva-lib 0.1.5
File Size Uploaded
calculadora_saraiva_lib-0.1.5.tar.gz 3.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for calculadora-saraiva-lib 0.1.5
File Interpreter ABI Platform
calculadora_saraiva_lib-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 7.9 kB

Release files / calculadora_saraiva_lib-0.1.5.tar.gz

Download URL calculadora_saraiva_lib-0.1.5.tar.gz
Size 3.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a3f05f2fb58eec00db02d5c2f1f04ae5fd09978c4ce9e3192557666a74f68d65
BLAKE2b-256 checksum
How to use checksums
56d3824b33a4c0e15b2f334c4ba20c39299d763931641a34e163c7772947a4aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / calculadora_saraiva_lib-0.1.5-py3-none-any.whl

Download URL calculadora_saraiva_lib-0.1.5-py3-none-any.whl
Size 4.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ff547e061a61d5c581b4ec3dc7aa02c8e82343951bb3bdc53db3ae64cd60ed1
BLAKE2b-256 checksum
How to use checksums
5bbd85b01a9252cf61176934b6dc8fb9992716b7375dd15c4d27715bd8af060a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page