# ============================================================================
# Synfire Project .gitignore
# Comprehensive ignore patterns for Python, Node.js, IDE files, OS files, and secrets
# ============================================================================

# ----------------------------------------------------------------------------
# Python
# ----------------------------------------------------------------------------

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

# C extensions
*.so

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

# PyInstaller
*.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/
pytest_cache/

# Translations
*.mo
*.pot

# Scrapy
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
Pipfile.lock

# poetry
poetry.lock

# pdm
.pdm.toml
.pdm-python
.pdm-build/

# PEP 582 (used by __pypackages__)
__pypackages__/

# Celery
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Virtual environments
.env/
.venv/
env/
venv/
ENV/
env.bak/
venv.bak/
.virtualenv/
virtualenv/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

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

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# Ruff
.ruff_cache/

# ----------------------------------------------------------------------------
# Node.js / JavaScript / TypeScript
# ----------------------------------------------------------------------------

# Dependencies
node_modules/
jspm_packages/
bower_components/

# Build output
dist/
out/
cdk.out/
.next/
.nuxt/
.output/
.cache/
.turbo/
output/

# Keep the Python package's output helpers tracked.
!packages/synfire/src/synfire/output/
!packages/synfire/src/synfire/output/**
packages/synfire/src/synfire/output/__pycache__/
packages/synfire/src/synfire/output/**/*.pyc

# Keep tracked source modules named "output" inside the Python package.
!packages/synfire/src/synfire/output/
!packages/synfire/src/synfire/output/**

# Keep the Python package's output helpers tracked.
!packages/synfire/src/synfire/output/
!packages/synfire/src/synfire/output/**
# Package manager files (keep package-lock.json for reproducible builds)
yarn.lock
pnpm-lock.yaml
.pnp
.pnp.js

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Coverage
coverage/
lib-cov/
.nyc_output/
api/coverage-unit.json
packages/synfire/coverage.json
packages/synfire-cli/coverage.json

# Logs
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*

# TypeScript
*.tsbuildinfo
.tsbuildinfo/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Local implementation worktrees
.worktrees/

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Dependency directories (for bundled cli tools)
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz

# Storybook
storybook-static/

# Playwright
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/

# Git worktrees
.worktrees/

# Vitest
.vitest/

# ----------------------------------------------------------------------------
# Environment and Secrets
# ----------------------------------------------------------------------------

# Environment files (NEVER commit secrets)
.env
.env.*
!.env.example
!.env.azure.example
!.env.template
.envrc

# AWS credentials
.aws/

# GCP credentials
*.json.key
service-account*.json
gcloud/

# SSH keys
*.pem
*.key
id_rsa*
id_ed25519*
id_ecdsa*
id_dsa*

# Certificates
*.crt
*.cer
*.p12
*.pfx

# Secrets files
secrets/
.secrets/
*.secret
*.secrets

# Credentials
credentials.json
credentials/
.credentials/

# API keys file
api-keys.txt
api_keys.json

# ----------------------------------------------------------------------------
# IDE and Editors
# ----------------------------------------------------------------------------

# Visual Studio Code
.vscode/
*.code-workspace
.history/

# JetBrains IDEs (PyCharm, WebStorm, IntelliJ, etc.)
.idea/
*.iml
*.ipr
*.iws
out/
.idea_modules/

# Sublime Text
*.sublime-project
*.sublime-workspace

# Vim
*.swp
*.swo
*.swn
*~
.netrwhist
Session.vim
Sessionx.vim
.vim/

# Emacs
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*
.org-id-locations
*_archive
*_flymake.*
/eshell/history
/eshell/lastdir
/elpa/
*.rel
/auto/
.cask/
dist/
flycheck_*.el
.projectile
.dir-locals.el
network-security.data

# TextMate
*.tmproj
*.tmproject
tmtags

# Notepad++
nppBackup/

# ----------------------------------------------------------------------------
# Operating System
# ----------------------------------------------------------------------------

# macOS
.DS_Store
.AppleDouble
.LSOverride
._*

# macOS Thumbnails
Icon

# macOS directory settings
.Spotlight-V100
.Trashes
.fseventsd

# Windows
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
Desktop.ini

# Windows shortcuts
*.lnk

# Windows Recycle Bin
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp

# Linux
*~
.fuse_hidden*
.directory
.Trash-*
.nfs*

# ----------------------------------------------------------------------------
# Docker
# ----------------------------------------------------------------------------

# Docker data volumes (local dev)
.docker-data/
docker-data/
data/postgres/
data/redis/
data/minio/

# Docker override files (optional)
docker-compose.override.yml
docker-compose.*.local.yml

# ----------------------------------------------------------------------------
# Database
# ----------------------------------------------------------------------------

# SQLite
*.sqlite
*.sqlite3
*.db

# PostgreSQL
*.pgdata

# Alembic
alembic/versions/*.pyc

# ----------------------------------------------------------------------------
# Logs and Temporary Files
# ----------------------------------------------------------------------------

# Log files
logs/
*.log
log/

# Temporary files
tmp/
temp/
*.tmp
*.temp
*.bak
*.backup

# Cache directories
.cache/
cache/

# ----------------------------------------------------------------------------
# Build and Artifacts
# ----------------------------------------------------------------------------

# Build directories
build/
builds/
_build/

# Artifacts
artifacts/
.artifacts/

# Terraform
*.tfstate
*.tfstate.*
*.tfvars
.terraform/
.terraform.lock.hcl
crash.log
crash.*.log

# Kubernetes
kubeconfig
.kube/

# Helm
charts/*.tgz

# ----------------------------------------------------------------------------
# Testing
# ----------------------------------------------------------------------------

# Test outputs
test-output/
test-results/
.test-results/

# Local verification artifacts (generated by local hooks/tests/debug runs)
output/

# Benchmark results
.benchmarks/
benchmarks/

# ----------------------------------------------------------------------------
# NIR Models (large files - consider Git LFS for actual model files)
# ----------------------------------------------------------------------------

# Large model files in development
*.nir.tmp
*.nir.bak

# Test model fixtures (if large, use Git LFS)
# Uncomment if needed:
# tests/fixtures/*.nir

# ----------------------------------------------------------------------------
# Miscellaneous
# ----------------------------------------------------------------------------

# Archives
*.tar
*.tar.gz
*.tar.bz2
*.tar.xz
*.zip
*.rar
*.7z

# Core dumps
core
core.*

# Profiling
*.prof
*.lprof
*.cprof

# Minified files (generated)
*.min.js
*.min.css

# Source maps (generated)
*.map

# Compiled output
*.pyc
*.pyo
*.class
*.dll
*.exe
*.o
*.a

# Lock files that should be committed are excluded above with !pattern
# Uncomment if you want to ignore specific lock files:
# Pipfile.lock
# poetry.lock

output/
