cgcardona / muse public
pyproject.toml
80 lines 1.9 KB
c8984819 test: bring core VCS coverage from 60% to 91% Gabriel Cardona <gabriel@tellurstori.com> 3d 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.11"
7 dependencies = [
8 "typer>=0.9.0",
9 "toml>=0.10.0",
10 "mido>=1.3.0",
11 ]
12
13 [project.scripts]
14 muse = "muse.cli.app:cli"
15
16 [project.optional-dependencies]
17 dev = [
18 "pytest>=8.0.0",
19 "pytest-asyncio>=0.23.0",
20 "pytest-cov>=4.1.0",
21 "anyio>=4.2.0",
22 "mypy>=1.8.0",
23 ]
24
25 [build-system]
26 requires = ["hatchling"]
27 build-backend = "hatchling.build"
28
29 [tool.pytest.ini_options]
30 asyncio_mode = "auto"
31 testpaths = ["tests"]
32 cache_dir = "/tmp/pytest_cache"
33 addopts = "-v --tb=short"
34
35 [tool.coverage.run]
36 source = ["muse"]
37 omit = [
38 # Hub/remote authentication — future feature, requires network fixtures
39 "muse/cli/config.py",
40 # MIDI binary parser — requires MIDI fixture files to test meaningfully
41 "muse/cli/midi_parser.py",
42 # Backward-compat re-export shim — trivially thin wrapper
43 "muse/cli/models.py",
44 ]
45
46 [tool.coverage.report]
47 exclude_lines = [
48 "pragma: no cover",
49 "if TYPE_CHECKING:",
50 "raise NotImplementedError",
51 ]
52
53 [tool.mypy]
54 python_version = "3.11"
55 strict = true
56 explicit_package_bases = true
57 namespace_packages = true
58 warn_unreachable = true
59 show_error_codes = true
60 # Exclude legacy music-services and stub CLI commands that still reference
61 # removed dependencies (SQLAlchemy, Pydantic, httpx, maestro.*).
62 # These will be brought into scope as each file is ported.
63 exclude = [
64 "muse/plugins/music/services/",
65 "muse/cli/commands/emotion_diff\\.py",
66 "muse/cli/commands/groove_check\\.py",
67 ]
68
69 [[tool.mypy.overrides]]
70 module = ["tests.*"]
71 disallow_untyped_decorators = false
72 disallow_untyped_defs = false
73 disallow_incomplete_defs = false
74
75 [[tool.mypy.overrides]]
76 module = ["mido", "toml"]
77 ignore_missing_imports = true
78
79 [tool.hatch.build.targets.wheel]
80 packages = ["muse"]