# Ignore all build artifacts and temporary files
*.bin
*.dat
*.dato
*.e
*.geo
*.h5
*.h5m
*.msh
*.off
*.pvtu
*.pyc
*.xdmf
*.xmf
*.xml
# ...except committed test fixtures under tests/python/meshes/, which
# legitimately use several of the extensions above (e.g. *.msh, *.geo,
# *.off) -- without this, `git mv`/`git add` silently drops them from
# tracking instead of erroring, since an already-ignored path is simply
# skipped rather than rejected (bit us once: five fixture files went
# untracked across the tests/ reorg and only surfaced as CI-only
# FileNotFoundErrors, since a local checkout still had them on disk).
!tests/python/meshes/**
# The compiled pybind11 extension (built in-place by `pip install -e .` /
# scikit-build-core editable installs) - a stray committed copy of this once
# got bundled into every manylinux wheel via wheel.packages, silently
# reintroducing whatever toolchain built it regardless of the actual CI build.
src/python/meshioplusplus/*.so
src/python/meshioplusplus/*.pyd
.cache/
MANIFEST
README.rst
# Claude ignore
.claude/
# Ignore build artifacts but keep the tracked configure scripts
# (an ignored *directory* cannot have re-included children, so use build/*).
build/*
!build/configure.sh
!build/configure.bat
!build/configure-wasm.sh
!build/build-wasm-deps.sh
# ...and the patches it applies to the sources it fetches. The prefix and the
# download cache it produces (build/wasm-deps/) stay ignored by the rule above.
!build/patches/
!build/patches/*.patch
build-tests/
build-omp/
build-tbb/
build-cpp-cov/
build-capi-nohdf5/
# Local micromamba env for the example/cpp/ xeus-cpp kernel (see example/cpp/README.md), reused by an
# `r-notebooks` env for the example/r/ IRkernel (see example/r/README.md)
.micromamba/
# Conan test package build output + CMake presets emitted by `conan create`.
packages/conan/build/
CMakeUserPresets.json
# Emscripten build output copied into the npm package staging dir -- built by
# build/configure-wasm.sh, not committed (mirrors build/* above).
src/wasm/dist/
# CMake FetchContent downloads (e.g. GoogleTest) land here inside a build dir
_deps/
dist/
doc/_build/
# Doxygen output for doc/Doxyfile - generated by CI (.github/workflows/docs.yml)
# into the VitePress dist output, never committed.
doc/doxygen-build/
*.egg-info/
.pytest_cache/
.coverage
.tox/
foo.vtk
.vscode/*
!.vscode/tasks.json
# Jupyter
.ipynb_checkpoints/

# src/viewer/ build output (see src/viewer/README.md); the wheel-bundled asset is
# committed separately at src/python/meshioplusplus/_viewer_assets/viewer.html
src/viewer/dist-web/
src/viewer/dist-embed/
src/viewer/node_modules/
src/viewer/test-results/
# Symlink to src/viewer/node_modules, created by its postinstall script (see
# src/viewer/tools/link-test-deps.mjs) so tests/viewer/*.spec.mjs can resolve
# @playwright/test.
tests/viewer/node_modules
src/viewer/playwright-report/

# doc/icons/ LaTeX build artifacts (svg-ui/ is committed; see doc/icons/README.md)
doc/icons/build-ui/

# `cmake --install` prefix used by the Julia and R bindings, which consume the
# INSTALLED C API rather than the build tree (see doc/julia.md, doc/r.md and
# the julia/r jobs in ci.yml). The `-nohdf5` sibling is the HDF5/netCDF-off
# prefix the example/julia/ and example/r/ notebooks consume instead (see
# example/julia/README.md for why Julia specifically needs it).
/inst/
/inst-nohdf5/

# R package build artifacts (src/Makevars is generated by ./configure)
bindings/r/meshioplusplus/src/Makevars
bindings/r/meshioplusplus/src/*.o
bindings/r/meshioplusplus/src/*.so
bindings/r/meshioplusplus/src/*.dll
meshioplusplus_*.tar.gz
*.Rcheck/

# Julia
bindings/julia/MeshioPlusPlus/Manifest.toml
