gabriel / musehub public
pyproject.toml
103 lines 2.7 KB
0bfb4569 add agent rules: Muse-only VCS, no Git/GitHub gabriel 9h ago
1 [project]
2 name = "musehub"
3 version = "0.1.0"
4 description = "MuseHub — the music composition version control platform powered by Muse VCS"
5 readme = "README.md"
6 license = {text = "MIT"}
7 requires-python = ">=3.14"
8 dependencies = [
9 "fastapi>=0.135.1",
10 "jinja2>=3.1.6",
11 "aiofiles>=25.1.0",
12 "uvicorn[standard]>=0.42.0",
13 "httpx>=0.28.1",
14 "pydantic>=2.12.5",
15 "pydantic-settings>=2.13.1",
16 "websockets>=15.0.1",
17 "PyJWT>=2.10.1",
18 "sqlalchemy[asyncio]>=2.0.48",
19 "asyncpg>=0.31.0",
20 "aiosqlite>=0.21.0",
21 "alembic>=1.18.4",
22 "psycopg2-binary>=2.9.10",
23 "slowapi>=0.1.9",
24 "cryptography>=46.0.5",
25 "boto3>=1.42.71",
26 "mido>=1.3.3",
27 "pyyaml>=6.0.2",
28 "mistune>=3.0.0",
29 "typer>=0.15.4",
30 "msgpack>=1.1",
31 ]
32
33
34 [project.optional-dependencies]
35 dev = [
36 "pytest>=8.3.5",
37 "pytest-asyncio>=0.25.3",
38 "pytest-cov>=6.1.0",
39 "pytest-xdist>=3.6.1",
40 "coverage>=7.8.0",
41 "anyio>=4.9.0",
42 "mypy>=1.15.0",
43 "factory-boy>=3.3.3",
44 ]
45
46 [build-system]
47 requires = ["hatchling"]
48 build-backend = "hatchling.build"
49
50 [tool.pytest.ini_options]
51 asyncio_mode = "auto"
52 asyncio_default_fixture_loop_scope = "function"
53 testpaths = ["tests"]
54 cache_dir = "/tmp/pytest_cache"
55 addopts = "-v --tb=short -p no:randomly"
56 filterwarnings = [
57 "ignore:The 'is_flag' and 'flag_value' parameters are not supported by Typer:DeprecationWarning",
58 # aiosqlite uses Python's deprecated default datetime adapter internally;
59 # this is a third-party library issue, not ours (production uses asyncpg).
60 "ignore:The default datetime adapter is deprecated:DeprecationWarning:aiosqlite",
61 # slowapi uses asyncio.iscoroutinefunction which is deprecated in 3.14+.
62 # This is a third-party library issue; suppress until slowapi ships a fix.
63 "ignore:'asyncio.iscoroutinefunction' is deprecated:DeprecationWarning:slowapi",
64 ]
65
66 [tool.coverage.run]
67 source = ["musehub"]
68 branch = true
69 omit = ["musehub/__init__.py", "*/tests/*"]
70
71 [tool.coverage.report]
72 fail_under = 60
73 show_missing = true
74 exclude_lines = [
75 "pragma: no cover",
76 "def __repr__",
77 "raise NotImplementedError",
78 "if TYPE_CHECKING:",
79 "if typing.TYPE_CHECKING:",
80 ]
81
82 [tool.mypy]
83 python_version = "3.14"
84 strict = true
85 explicit_package_bases = true
86 namespace_packages = true
87 warn_unreachable = true
88 show_error_codes = true
89
90 [[tool.mypy.overrides]]
91 module = ["tests.*"]
92 disallow_untyped_decorators = false
93
94 [[tool.mypy.overrides]]
95 module = ["boto3", "botocore.*", "mido", "yaml", "qdrant_client", "qdrant_client.*"]
96 ignore_missing_imports = true
97
98 [[tool.mypy.overrides]]
99 module = ["msgpack", "msgpack.*"]
100 ignore_missing_imports = true
101
102 [tool.hatch.build.targets.wheel]
103 packages = ["musehub"]