.cache
.pants.d
.pids

dist/

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
!apps/frontend/src/lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Flask stuff:
instance/
.webassets-cache


# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
.direnv

# pnpm
node_modules/
.pnpm-debug.log

# Poetry (do NOT ignore poetry.lock - needed for reproducibility)

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

/archive
.DS_Store

# Node.js (frontend)
node_modules/
.npm
.eslintcache

# SvelteKit
.svelte-kit/
build/
.vercel

# Local storage uploads
uploads/

# Local session files (for testing)
.skua/

# Local seed IDs (gitignored — run `just seed dev` to generate)
examples.dev.json
# Note: examples.stage.json is checked in, same as examples.prod.json.
# CI builds the stage CF Pages from a clean checkout, so anything not committed
# falls through to prod IDs and yields 404s on stage. Commit the file after
# each `just seed stage` run, like prod.

# Public client repo checkout (managed by `just release`)
skua-client/

# PyPI test environment
tests/pypi/.venv/
tests/pypi/uv.lock
!tests/pypi/.env

# Environment files. Convention:
#   .env         — shared app constants (plain, gitignored)
#   .env.dev     — dev backend + dev ops (plain, gitignored — no real secrets)
#   .env.stage   — stage runtime + ops (SOPS-ENCRYPTED, committed)
#   .env.prod    — prod runtime + ops (SOPS-ENCRYPTED, committed)
#   .env.local   — last-loaded override scratchpad (plain, gitignored)
# Stage/prod are encrypted in place via SOPS+age (.sops.yaml drives it).
# The encrypted blobs are committed; the unencrypted form never is.
# See docs/SECRETS.md for the model.
.env
.env.dev
.env.local
.env.*.local

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db

# Testing
.pytest_cache/
.coverage
htmlcov/
*.log

# Production build artifacts
dist/
*.egg-info/
# Homelab-only staging notes (local to Kaloyan's machine)
docs/HOMELAB_STAGING.md
