# Build artifacts
/dist/
/build/
*.egg-info/
src/*.egg-info/

# Bytecode / caches
__pycache__/
*.py[cod]
.pytest_cache/
.ruff_cache/
.mypy_cache/

# Virtual environments
.venv/
venv/

# Logs
*.log

# OS / editor
.DS_Store
.idea/
.vscode/

# uv: the lock IS committed (reproducible CI via `uv sync --frozen`); it is
# excluded from the published sdist by the [tool.hatch.build.targets.sdist]
# allowlist, so it never ships inside the package.
