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