# Root-only entries are anchored with a leading "/". An unanchored pattern
# matches at ANY depth and will silently swallow nested directories.

# --- Secrets / local config ---
.env
.env.*
!.env.example

# --- OS / editor cruft ---
.DS_Store
Thumbs.db
*.swp
*~
/.vscode/

# --- JetBrains IDEs ---
/.idea/
*.iml
*.iws
/out/
.editorconfig

# --- Python ---
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
.venv/
.venv-*/
venv/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.tox/
.nox/
.hypothesis/
.coverage
.coverage.*
coverage.xml
htmlcov/

# --- Node.js ---
node_modules/
.npm/
.yarn/cache/
.pnp.*
.eslintcache
*.tsbuildinfo
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# `npm pack` writes the tarball beside package.json.
*.tgz
*.tar.gz

# --- Go ---
# go.work resolves nested modules locally, which hides breakage in consumers
# and Docker builds that have no workspace. Keep it local-only.
go.work
go.work.sum
*.test
*.exe
*.dll
*.dylib
*.so
coverage.out

# --- Shared build output (Python sdists/wheels, Node bundles, Sphinx) ---
build/
_build/
dist/
coverage/

# NOTE: generated gRPC/protobuf client code (*.pb.go, *_pb2.py, *_pb2_grpc.py,
# *_pb.js, *_pb.d.ts) is intentionally NOT ignored. This repo publishes those
# clients; a `go get` / `pip install` consumer cannot run codegen.

