# Python
__pycache__/
*.py[codz]
*.egg-info/
dist/
build/
*.egg

# Virtual environments (.venv-example/: the one docs/guides/first-run.md makes)
.venv/
.venv-example/
venv/
.env

# uv
# uv.lock is committed for reproducibility

# Dymola artifacts
*.mat
dslog.txt
dsin.txt
dsfinal.txt
buildlog.txt
dymosim
dymosim.exe
dymosim.exp
dymosim.lib
dymosim.dll
dsmodel.c
dsmodel_att.h
dymola.log
status
success
failure
*.bif-*

# Keep test fixture results (override above exclusions)
!tests/fixtures/results/**/*.mat
!tests/fixtures/results/**/dslog.txt
!tests/fixtures/results/**/dsin.txt
!tests/fixtures/results/**/dsfinal.txt
!tests/fixtures/results_openmodelica/**/*.mat

# Simulation output (generated by the tool)
testing_output/

# Generated reports (dashboard.html, interactive plots, comparison_data.json)
reports/

# The documentation site, built (sphinx-build docs docs/_build/html)
docs/_build/

# Reference-FMUs binaries (fetched by scripts/fetch_reference_fmus.py)
examples/fmu/reference-fmus-binaries/

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

# OS
.DS_Store
Thumbs.db

# Coverage / testing
.coverage
.coverage.*
htmlcov/
.pytest_cache/
.tox/
.nox/

# Translations (gettext .mo — NOT Modelica .mo files)
*.pot

# Cursor
.cursorignore
.cursorindexingignore
# Local agent configuration and working notes. Machine-local: the paths
# inside resolve only on the machine that wrote them.
.claude/

# Test fixtures named like Dymola artifacts are real, committed test data —
# the artifact patterns above (dslog.txt, *.mat, ...) must not swallow them.
# (results/Dymola/dslog.txt + dsres.mat were already force-added; this keeps
# the results_additional/ dslog fixture tracked too. Big generated fixtures —
# dsfinal.txt, dsin.txt, dsmodel.c — stay ignored: no test references them.)
!tests/fixtures/**/dslog.txt

# Local working-session notes and agent state — never published.
# The project's durable record is docs/decisions.md and docs/ideas.md.
.soul/
