# Algan videos
# Heavy render baselines are release assets. Local rebaselines remain
# discoverable by scripts/package_baselines.py but must not be recommitted.
tests/full_renders/expected_outputs_*/
tests/path_traced/expected_outputs_*/
**/output_errors/
benchmarks/_*_out/
**/algan_outputs/
# tests/full_renders writes its renders next to the baselines, in a directory
# the glob above just misses (test_full_renders.OUTPUT_DIR).
**/algan_outputs2/
algan_outputs/
algan_outputs
algan_cache

# What benchmarks/_mps_capability_probe.py writes. It is a measurement of the
# machine it ran on, so it belongs in a CI artifact, not in the tree.
mps_probe_results.json
probe-output.txt

# Same for benchmarks/_mps_vs_cpu_torch_speed.py.
benchmarks/mps_vs_cpu_speed.json
speed-output.txt

# The frame benchmarks/_mps_render_smoke.py draws. It is what the run produced
# on the machine it ran on -- a CI artifact, not a baseline: nothing compares
# against it, and the two devices legitimately tessellate differently.
mps_render_smoke/

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

# C extensions
*.so

.agents
# Ignore personal Claude Code state, but track the shared project config: the
# SessionStart hook is what makes Claude Code on the web able to build and test
# this repo, so it has to be committed. Git will not look inside an ignored
# directory, hence ignoring the contents rather than the directory itself.
.claude/*
!.claude/settings.json
!.claude/hooks/
!.claude/skills/
.codex
.devcontainer

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

*.log

# Sphinx documentation
docs/_build/
docs/build/
docs/source/_autosummary/
docs/source/reference/
docs/source/_build/
docs/rendering_times.csv
#i18n ####
docs/i18n/gettext/.doctrees
docs/i18n/**/*.mo
docs/i18n/translatable.po
docs/i18n/untranslatable.po

# PyBuilder
target/

# Jupyter Notebook
jupyter/
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

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

# PyCharm
/.idea/

# Celery stuff
celerybeat-schedule
celerybeat.pid

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

# mkdocs documentation
/site

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

*.pyc
*.bak
.DS_Store

.floo
.flooignore
.vscode
.vs
*.xml
*.iml
media
**/media/
.eggs/
build/
dist/

/media_dir.txt
# ^TODO: Remove the need for this with a proper config file

# Ignore the built dependencies
third_party/*

/debug/
/tests/output_errors/
/scratch/
/tests/full_renders/output_errors/

# Session scratch (briefs for subagents, interim measurements)
/scratch_*

# The renderer audit's Three.js back end (benchmarks/renderer_audit/three_render.mjs)
# needs three + three-gpu-pathtracer + playwright installed beside it; the
# script's header says how. Reference renders are regenerated, not committed.
benchmarks/renderer_audit/node_modules/
benchmarks/renderer_audit/package.json
benchmarks/renderer_audit/package-lock.json

# What benchmarks/_mps_torch_op_probe.py writes in CI, for the artifact and
# for the end-of-job replay. A measurement of the machine it ran on.
torch-op-probe.txt
pytest-output.txt
compile-trace.txt

# Written by algan/utils/profiling_utils.py into the working directory
algan_profile_report*.txt

# The patched Quadrants wheels `scripts/build_quadrants_wheels.py` downloads.
# 20-30 MiB each and a full matrix is twelve of them, so the bytes stay out of
# git for the reason the render baselines do (`tests/README.md`, "Where the
# heavy baselines live"). The manifest beside them IS committed: it carries the
# run id, the commit and a sha256 per wheel and per patch, so which wheel a
# measurement was taken on stays recoverable without the wheel being here.
/quadrants_wheels/*
!/quadrants_wheels/manifest.json
