# =============================================================================
# .gitignore
# =============================================================================
#
# CONCEPT: .gitignore
#   Git tracks which files have changed so you can save and share them.
#   But some files should NEVER be committed to the repository:
#     - Generated files (Python bytecode, compiled binaries) — can be regenerated
#     - Virtual environments (.venv/) — huge, and differ per machine
#     - Secrets and credentials — NEVER commit passwords or API keys
#     - Editor config (personal preferences, not part of the project)
#     - OS-generated files (.DS_Store on macOS, Thumbs.db on Windows)
#
#   The .gitignore file tells Git: "ignore these file patterns."
#   A line starting with # is a comment.
#   A trailing / means "match directories only."
#   A leading ! means "do NOT ignore this" (exception to a broader rule).
#
# =============================================================================

# ============================================================
# Python bytecode and caches
# ============================================================
# Python compiles .py files to .pyc for speed. These are regenerated
# automatically so there's no reason to commit them.
__pycache__/
*.py[cod]        # matches .pyc, .pyo, .pyd
*$py.class

# ============================================================
# Virtual environments
# ============================================================
# A virtual environment (.venv, venv) is an isolated Python installation
# for this project. It's large (hundreds of MB) and machine-specific.
# Everyone creates their own with: python -m venv .venv
.venv/
venv/
env/
ENV/

# ============================================================
# Build artifacts
# ============================================================
# These are generated when you run `pip install -e .` or build a wheel.
*.egg-info/
dist/
build/
*.egg
MANIFEST

# ============================================================
# Test and coverage output
# ============================================================
# pytest creates .pytest_cache/ for caching test results.
# coverage creates .coverage (database) and htmlcov/ (HTML report).
.pytest_cache/
.coverage
.coverage.*
htmlcov/
coverage.xml

# ============================================================
# Type checking artifacts
# ============================================================
.mypy_cache/
.dmypy.json
dmypy.json

# ============================================================
# Reports generated by flakydetect itself
# ============================================================
# Don't commit reports — they're outputs, not source.
flaky-report.json
*.junit.xml
junit*.xml

# ============================================================
# macOS
# ============================================================
# .DS_Store files are created by macOS Finder. They contain
# folder display preferences and are purely local.
.DS_Store
.AppleDouble
.LSOverride

# ============================================================
# Windows
# ============================================================
Thumbs.db
ehthumbs.db
Desktop.ini

# ============================================================
# Linux
# ============================================================
*~       # Backup files created by some text editors

# ============================================================
# IDEs and editors
# ============================================================
# .idea/   = JetBrains (PyCharm, IntelliJ)
# .vscode/ = Visual Studio Code
# Keep these local — everyone has their own preferences.
.idea/
.vscode/
*.swp    # Vim swap files
*.swo    # Vim swap files

# ============================================================
# Environment files
# ============================================================
# IMPORTANT: NEVER commit .env files!
# They often contain API keys, database passwords, and other secrets.
.env
.env.*
!.env.example  # It's OK to commit a template/example (with fake values)
