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

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
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/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.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
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

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

# 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/

# macOS
.DS_Store

# Project-specific
*.json
!pyproject.toml
.worktrees/

# Claude Code agent workspace. .claude/worktrees/ holds complete clones of
# this repo (each with its own .git), so it must never be committed, and must
# never reach the sdist — hatchling's default sdist only skips what git ignores.
.claude/
.claude/worktrees/

# Deployments and operational notes
docs/deployments/

# Local diagnostic, data, and sensitive files
backup.txt
test_login.py
fetch_attachments.py
open_classes.py
freqs.txt
downloaded_attachments/
/course_aliases.json



# Personal data / infrastructure details — never commit these.
DEPLOYMENT.md
docs/deployments/
course_aliases.json
snapshot.json
daemon_state.json

# `mb download` default output dir (task_<id>_<title_slug>) when a test or a
# manual run is invoked without --output-dir.
/task_*

