cgcardona / muse public
feat main

feat: implement .museignore — gitignore-style snapshot exclusion (#7) (#8)

Adds .museignore support so users can declare which workspace files are never committed, identical to .gitignore syntax.

- muse/core/ignore.py: pure parser (load_patterns) and filter (is_ignored) with full gitignore semantics — globs, **, negation, anchored patterns, directory-only patterns, last-rule-wins - MusicPlugin.snapshot(): reads .museignore from repo root and filters excluded paths before hashing; dotfiles remain unconditionally excluded - muse/domain.py: documents the .museignore contract in the MuseDomainPlugin.snapshot() docstring so all domain authors know they must honour it - docs/reference/museignore.md: full format reference with examples for music, genomics, simulation, and spatial domains - tests/test_core_ignore.py: 41 tests covering load_patterns, _matches internals, is_ignored rule evaluation, and end-to-end MusicPlugin.snapshot() integration

Co-authored-by: Gabriel Cardona <gabriel@tellurstori.com>

G Gabriel Cardona <cgcardona@gmail.com> · 3d ago Mar 17, 2026 · ed2c33d0 · parent 0e0cbf44
10
files changed
64
files in snapshot
Files Changed 64 in snapshot
~5 −5
muse/cli/commands/attributes.py .py
muse/core/attributes.py .py
muse/plugins/music/midi_merge.py .py
tests/test_core_attributes.py .py
tests/test_music_midi_merge.py .py
← Older Oldest on main
All commits
Newer → Latest on main