cgcardona / muse public
pyproject.toml
77 lines 1.7 KB
5a7035e3 feat: Python 3.12 baseline, dep refresh, and docs navigation index Gabriel Cardona <gabriel@tellurstori.com> 2d 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 ]
11
12 [project.scripts]
13 muse = "muse.cli.app:cli"
14
15 [project.optional-dependencies]
16 dev = [
17 "pytest>=9.0.0",
18 "pytest-asyncio>=1.0.0",
19 "pytest-cov>=7.0.0",
20 "anyio>=4.9.0",
21 "mypy>=1.19.0",
22 ]
23
24 [build-system]
25 requires = ["hatchling>=1.29.0"]
26 build-backend = "hatchling.build"
27
28 [tool.pytest.ini_options]
29 asyncio_mode = "auto"
30 testpaths = ["tests"]
31 cache_dir = "/tmp/pytest_cache"
32 addopts = "-v --tb=short"
33
34 [tool.coverage.run]
35 source = ["muse"]
36 omit = [
37 # Hub/remote authentication — future feature, requires network fixtures
38 "muse/cli/config.py",
39 # MIDI binary parser — requires MIDI fixture files to test meaningfully
40 "muse/cli/midi_parser.py",
41 # Backward-compat re-export shim — trivially thin wrapper
42 "muse/cli/models.py",
43 ]
44
45 [tool.coverage.report]
46 exclude_lines = [
47 "pragma: no cover",
48 "if TYPE_CHECKING:",
49 "raise NotImplementedError",
50 ]
51
52 [tool.mypy]
53 python_version = "3.12"
54 strict = true
55 explicit_package_bases = true
56 namespace_packages = true
57 warn_unreachable = true
58 show_error_codes = true
59 # Exclude deferred files not yet ported to the strict typed surface.
60 exclude = [
61 "muse/plugins/music/services/",
62 "muse/cli/commands/emotion_diff\\.py",
63 "muse/cli/commands/groove_check\\.py",
64 ]
65
66 [[tool.mypy.overrides]]
67 module = ["tests.*"]
68 disallow_untyped_decorators = false
69 disallow_untyped_defs = false
70 disallow_incomplete_defs = false
71
72 [[tool.mypy.overrides]]
73 module = ["mido"]
74 ignore_missing_imports = true
75
76 [tool.hatch.build.targets.wheel]
77 packages = ["muse"]