cgcardona / muse public
pyproject.toml
112 lines 3.0 KB
062ae392 feat: code-domain semantic commands + code tour de force demo (#54) Gabriel Cardona <cgcardona@gmail.com> 1d ago
1 [project]
2 name = "muse"
3 version = "0.1.1"
4 description = "Muse — domain-agnostic version control for multidimensional state"
5 readme = "README.md"
6 requires-python = ">=3.12"
7 dependencies = [
8 "typer>=0.14.0",
9 "mido>=1.3.3",
10 # tree-sitter: professional AST parsing for the code domain plugin.
11 # Used by GitHub Copilot, VS Code, Neovim, and Zed — the industry standard.
12 "tree-sitter>=0.24.0",
13 "tree-sitter-javascript>=0.23.0",
14 "tree-sitter-typescript>=0.23.0",
15 "tree-sitter-java>=0.23.0",
16 "tree-sitter-go>=0.23.0",
17 "tree-sitter-rust>=0.24.0",
18 "tree-sitter-c>=0.23.0",
19 "tree-sitter-cpp>=0.23.0",
20 "tree-sitter-c-sharp>=0.23.0",
21 "tree-sitter-ruby>=0.23.0",
22 "tree-sitter-kotlin>=1.0.0",
23 ]
24
25 [project.scripts]
26 muse = "muse.cli.app:cli"
27
28 [project.optional-dependencies]
29 dev = [
30 "pytest>=9.0.0",
31 "pytest-asyncio>=1.0.0",
32 "pytest-cov>=7.0.0",
33 "anyio>=4.9.0",
34 "mypy>=1.19.0",
35 ]
36
37 [build-system]
38 requires = ["hatchling>=1.29.0"]
39 build-backend = "hatchling.build"
40
41 [tool.pytest.ini_options]
42 asyncio_mode = "auto"
43 testpaths = ["tests"]
44 cache_dir = "/tmp/pytest_cache"
45 addopts = "-v --tb=short"
46
47 [tool.coverage.run]
48 source = ["muse"]
49 omit = [
50 # Hub/remote authentication — future feature, requires network fixtures
51 "muse/cli/config.py",
52 # MIDI binary parser — requires MIDI fixture files to test meaningfully
53 "muse/cli/midi_parser.py",
54 # Backward-compat re-export shim — trivially thin wrapper
55 "muse/cli/models.py",
56 ]
57
58 [tool.coverage.report]
59 exclude_lines = [
60 "pragma: no cover",
61 "if TYPE_CHECKING:",
62 "raise NotImplementedError",
63 ]
64
65 [tool.mypy]
66 python_version = "3.12"
67 strict = true
68 explicit_package_bases = true
69 namespace_packages = true
70 warn_unreachable = true
71 show_error_codes = true
72 # Exclude deferred files not yet ported to the strict typed surface.
73 exclude = [
74 "muse/plugins/music/services/",
75 "muse/cli/commands/emotion_diff\\.py",
76 "muse/cli/commands/groove_check\\.py",
77 ]
78
79 [[tool.mypy.overrides]]
80 module = ["tests.*"]
81 disallow_untyped_decorators = false
82 disallow_untyped_defs = false
83 disallow_incomplete_defs = false
84
85 [[tool.mypy.overrides]]
86 module = ["mido"]
87 ignore_missing_imports = true
88
89 [[tool.mypy.overrides]]
90 # tree-sitter and its grammar packages ship compiled C extensions. The core
91 # package (tree_sitter) provides py.typed stubs when run via `python -m mypy`
92 # from the project venv, but a globally-installed mypy cannot resolve them.
93 # Grammar packages never ship stubs. Marking all of them ignore_missing_imports
94 # keeps both invocation styles green; the venv mypy still validates our usage
95 # against the stubs when they are findable (CI).
96 module = [
97 "tree_sitter",
98 "tree_sitter_javascript",
99 "tree_sitter_typescript",
100 "tree_sitter_java",
101 "tree_sitter_go",
102 "tree_sitter_rust",
103 "tree_sitter_c",
104 "tree_sitter_cpp",
105 "tree_sitter_c_sharp",
106 "tree_sitter_ruby",
107 "tree_sitter_kotlin",
108 ]
109 ignore_missing_imports = true
110
111 [tool.hatch.build.targets.wheel]
112 packages = ["muse"]