gabriel / musehub public
pyproject.toml toml
105 lines 3.1 KB
Raw
sha256:9590cee1e0ccd6c76528f005b95d634d80f5019f0dcb7c371e149adc31d1fb65 refactor: enforce gRPC framing on all MWP wire traffic Sonnet 4.6 minor ⚠ breaking 156 days ago
1 [project]
2 name = "musehub"
3 version = "0.2.0rc4"
4 description = "MuseHub — remote collaboration, code intelligence, and MCP tooling for 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 "hypercorn>=0.17.3",
14 "httpx>=0.28.1",
15 "pydantic>=2.12.5",
16 "pydantic-settings>=2.13.1",
17 "websockets>=15.0.1",
18 "sqlalchemy[asyncio]>=2.0.48",
19 "asyncpg>=0.31.0",
20 "alembic>=1.18.4",
21 "psycopg2-binary>=2.9.10",
22 "slowapi>=0.1.9",
23 "cryptography>=46.0.5",
24 "boto3>=1.42.71",
25 "mido>=1.3.3",
26 "pyyaml>=6.0.2",
27 "mistune>=3.0.0",
28 "typer>=0.15.4",
29 "msgpack>=1.1",
30 ]
31
32
33 [project.optional-dependencies]
34 dev = [
35 "muse>=0.2.0", # VCS engine — bind-mounted at /src/muse in docker-compose.override.yml
36 "muse_contracts>=0.2.0", # cross-repo wire contracts — bind-mounted at /src/contracts in docker-compose.override.yml
37 "pytest>=8.3.5",
38 "pytest-asyncio>=0.25.3",
39 "pytest-cov>=6.1.0",
40 "pytest-timeout>=2.3.1",
41 "pytest-xdist>=3.6.1",
42 "coverage>=7.8.0",
43 "anyio>=4.9.0",
44 "mypy>=1.15.0",
45 "factory-boy>=3.3.3",
46 ]
47
48 [build-system]
49 requires = ["hatchling"]
50 build-backend = "hatchling.build"
51
52 [tool.pytest.ini_options]
53 asyncio_mode = "auto"
54 asyncio_default_fixture_loop_scope = "function"
55 testpaths = ["tests"]
56 cache_dir = "/tmp/pytest_cache"
57 addopts = "-v --tb=short -p no:randomly"
58 filterwarnings = [
59 "ignore:The 'is_flag' and 'flag_value' parameters are not supported by Typer:DeprecationWarning",
60 # slowapi uses asyncio.iscoroutinefunction which is deprecated in 3.14+.
61 # This is a third-party library issue; suppress until slowapi ships a fix.
62 "ignore:'asyncio.iscoroutinefunction' is deprecated:DeprecationWarning:slowapi",
63 # slowapi references the starlette alias HTTP_422_UNPROCESSABLE_ENTITY which
64 # is deprecated in favour of HTTP_422_UNPROCESSABLE_CONTENT.
65 "ignore:'HTTP_422_UNPROCESSABLE_ENTITY' is deprecated:DeprecationWarning:slowapi",
66 # AsyncMock coroutines created inside wire_push are intentionally discarded
67 # when the DB mock raises — the test only checks the warning log, not DB state.
68 "ignore:coroutine 'AsyncMockMixin._execute_mock_call' was never awaited:RuntimeWarning",
69 ]
70
71 [tool.coverage.run]
72 source = ["musehub"]
73 branch = true
74 omit = ["musehub/__init__.py", "*/tests/*"]
75
76 [tool.coverage.report]
77 fail_under = 60
78 show_missing = true
79 exclude_lines = [
80 "pragma: no cover",
81 "def __repr__",
82 "raise NotImplementedError",
83 "if TYPE_CHECKING:",
84 "if typing.TYPE_CHECKING:",
85 ]
86
87 [tool.mypy]
88 python_version = "3.14"
89 strict = true
90 explicit_package_bases = true
91 namespace_packages = true
92 warn_unreachable = true
93 show_error_codes = true
94 mypy_path = "../contracts"
95
96 [[tool.mypy.overrides]]
97 module = ["tests.*"]
98 disallow_untyped_decorators = false
99
100 [[tool.mypy.overrides]]
101 module = ["boto3", "botocore.*", "mido", "yaml", "qdrant_client", "qdrant_client.*", "msgpack"]
102 ignore_missing_imports = true
103
104 [tool.hatch.build.targets.wheel]
105 packages = ["musehub"]
File History 1 commit
sha256:9590cee1e0ccd6c76528f005b95d634d80f5019f0dcb7c371e149adc31d1fb65 refactor: enforce gRPC framing on all MWP wire traffic Sonnet 4.6 minor ⚠ 156 days ago