COMMON PAKCAGES
Common Packages
Beberapa package yang sering dipakai
HTTP & API
- requests - HTTP client sederhana
- httpx - HTTP client modern
- fastapi / flask - web framework
- uvicorn / gunicorn - ASGI/WSGI server
Data & Serialization
- pydantic - data validation & parsing (wajib kalau FastAPI)
- python-dotenv - baca .env env vars
- sqlalchemy - ORM / DB toolkit
- alembic - DB migrations untuk SQLAlchecmy
Utilities / Quantity
- rich - output terminal yang cakep
- loguru - logging
- pytest - testing
- black, isort, flake8 / ruff, mypy - formatting, linting, type checking
other
- pathlib - path handling
- asyncio - async framework
- dataclasses - simple class without boilerplate
- python-dotenv - load environment variables
- numpy - fundamental numerical library
- pandas - dataframe / data processing
pyproject.toml
- file konfigurasi standar untuk python modern
- mirip package.json kalau di Nodejs atau compose.json di PHP
Contoh tanpa poetry
[project]
name = "my-app"
version = "0.1.0"
description = "Simple API using FastAPI"
authors = [
{ name = "Pythonia", email = "pythonia@example.com" }
]
requires-python = ">=3.12"
dependencies = [
"fastapi",
"uvicorn[standard]",
"pydantic>=2.0.0",
]
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
Penjelasan singkat:
- [project]
- name, version → identitas project (wajib kalau mau dijadikan package)
- requires-python → versi Python minimal
- dependencies → daftar package dari PyPI
- [build-system]
- requires → library yang dibutuhkan untuk proses build
- build-backend → tool yg dipakai untuk build (setuptools/poetry/pdm/dll) Untuk pure app internal (bukan library yang mau dipublish), ini sudah cukup.
Contoh dengan poetry
[tool.poetry]
name = "my-fastapi-app"
version = "0.1.0"
description = "FastAPI backend for my project"
authors = ["Pythonia <pythonia@example.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.12"
fastapi = "^0.115.0"
uvicorn = { extras = ["standard"], version = "^0.30.0" }
pydantic = "^2.9.0"
python-dotenv = "^1.0.1"
sqlalchemy = "^2.0.0"
[tool.poetry.group.dev.dependencies]
pytest = "^8.0.0"
black = "^24.0.0"
ruff = "^0.7.0"
mypy = "^1.11.0"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
Penjelasan:
- [tool.poetry]
- metadata project (nama, versi, author)
- [tool.poetry.dependencies]
- dependency utama (prod)
- [tool.poetry.group.dev.dependencies]
- dependency khusus dev (testing, linting)
- [build-system]
- Poetry memakai poetry-core sebagai build backend
Install package:
poetry add fastapi
poetry add --group dev pytest
Poetry akan otomatis update pyproject.toml dan poetry.lock
Konfigurasi tools di pyproject.toml
Contoh
- Black
- Ruff (linter)
- pytest