gabriel / musehub public
pyproject.toml toml
120 lines 3.9 KB
Raw
sha256:35d76015db2541686c33edd44343ea2d9f751325b4a5556cc9c4c9c0f84edbbe chore: bump version to 0.2.0rc12 Sonnet 4.6 patch 41 days ago
1 [project]
2 name = "musehub"
3 version = "0.2.0.dev4"
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.136.1",
10 "jinja2>=3.1.6",
11 "aiofiles>=25.1.0",
12 "uvicorn[standard]>=0.46.0",
13 "httpx[http2]>=0.28.1",
14 "psutil>=7.2.2",
15 "pydantic>=2.13.3",
16 "pydantic-settings>=2.14.0",
17 "websockets>=16.0",
18 "sqlalchemy[asyncio]>=2.0.49",
19 "asyncpg>=0.31.0",
20 "alembic>=1.18.4",
21 "psycopg2-binary>=2.9.12",
22 "slowapi>=0.1.9",
23 "cryptography>=48.0.0",
24 "boto3>=1.43.3",
25 "mido>=1.3.3",
26 "pyyaml>=6.0.3",
27 "mistune>=3.2.1",
28 "typer>=0.25.1",
29 "msgpack>=1.1.2",
30 "zstandard>=0.25.0",
31 "cairosvg>=2.7.1",
32 "playwright>=1.50.0",
33 ]
34
35
36 [project.optional-dependencies]
37 dev = [
38 "muse>=0.2.0", # VCS engine — bind-mounted at /src/muse in docker-compose.override.yml
39 "muse_contracts>=0.2.0", # cross-repo wire contracts — bind-mounted at /src/contracts in docker-compose.override.yml
40 "pytest>=9.0.3",
41 "pytest-asyncio>=1.3.0",
42 "pytest-cov>=7.1.0",
43 "pytest-timeout>=2.3.1",
44 "pytest-xdist>=3.6.1",
45 "coverage>=7.13.0",
46 "anyio>=4.13.0",
47 "mypy>=1.20.0",
48 "factory-boy>=3.3.3",
49 ]
50
51 [build-system]
52 requires = ["hatchling"]
53 build-backend = "hatchling.build"
54
55 [tool.pytest.ini_options]
56 asyncio_mode = "auto"
57 asyncio_default_fixture_loop_scope = "function"
58 testpaths = ["tests"]
59 cache_dir = "/tmp/pytest_cache"
60 addopts = "-v --tb=short -p no:randomly"
61 markers = [
62 "slow: tests that are slow or require external infrastructure — skip with -m 'not slow'",
63 "wire: wire protocol regression suite (mpack push/fetch/gc/ff/scan/rate) — select with -m wire",
64 "migrations: tests that DROP/CREATE databases — run explicitly with -m migrations, never in the default suite",
65 "tier1: unit tests — pure functions, no I/O",
66 "tier2: integration tests — real DB via db_session fixture",
67 "tier3: end-to-end tests — FastAPI TestClient round-trips",
68 "tier4: stress tests — concurrency and idempotency under load",
69 "tier5: data integrity tests — DB invariants",
70 "tier6: performance tests — query latency with index coverage",
71 "tier7: security tests — sig replay, cross-protocol, impersonation",
72 ]
73 filterwarnings = [
74 "ignore:The 'is_flag' and 'flag_value' parameters are not supported by Typer:DeprecationWarning",
75 # slowapi uses asyncio.iscoroutinefunction which is deprecated in 3.14+.
76 # This is a third-party library issue; suppress until slowapi ships a fix.
77 "ignore:'asyncio.iscoroutinefunction' is deprecated:DeprecationWarning:slowapi",
78 # slowapi references the starlette alias HTTP_422_UNPROCESSABLE_ENTITY which
79 # is deprecated in favour of HTTP_422_UNPROCESSABLE_CONTENT.
80 "ignore:'HTTP_422_UNPROCESSABLE_ENTITY' is deprecated:DeprecationWarning:slowapi",
81 # AsyncMock coroutines created inside wire_push are intentionally discarded
82 # when the DB mock raises — the test only checks the warning log, not DB state.
83 "ignore:coroutine 'AsyncMockMixin._execute_mock_call' was never awaited:RuntimeWarning",
84 ]
85
86 [tool.coverage.run]
87 source = ["musehub"]
88 branch = true
89 omit = ["musehub/__init__.py", "*/tests/*"]
90
91 [tool.coverage.report]
92 fail_under = 60
93 show_missing = true
94 exclude_lines = [
95 "pragma: no cover",
96 "def __repr__",
97 "raise NotImplementedError",
98 "if TYPE_CHECKING:",
99 "if typing.TYPE_CHECKING:",
100 ]
101
102 [tool.mypy]
103 python_version = "3.14"
104 strict = true
105 explicit_package_bases = true
106 namespace_packages = true
107 warn_unreachable = true
108 show_error_codes = true
109 mypy_path = "../contracts"
110
111 [[tool.mypy.overrides]]
112 module = ["tests.*"]
113 disallow_untyped_decorators = false
114
115 [[tool.mypy.overrides]]
116 module = ["boto3", "botocore.*", "mido", "yaml", "qdrant_client", "qdrant_client.*", "msgpack"]
117 ignore_missing_imports = true
118
119 [tool.hatch.build.targets.wheel]
120 packages = ["musehub"]
File History 6 commits
sha256:35d76015db2541686c33edd44343ea2d9f751325b4a5556cc9c4c9c0f84edbbe chore: bump version to 0.2.0rc12 Sonnet 4.6 patch 41 days ago
sha256:8b0fb5814ab41a08af1f212c956bd08fe74190c2818ba5c503848fda6e33e216 chore: bump version to 0.2.0rc12 Sonnet 4.6 patch 42 days ago
sha256:3c58668648c7323bb9f5c6881cfe6a3f14fc93fcb73b537d253732952a5bf8bf chore: bump version to 0.2.0rc12 Sonnet 4.6 patch 42 days ago
sha256:d8cbca3a06f39f82f66be6c29de3f41c3dec5f367722958fb5454dcbc007cc15 fix: rc11 test fixes — event→verdict rename, migration coun… Sonnet 4.6 patch 48 days ago
sha256:ad616c6113d6c00f4efed6b2993734ca46d3e9b5bee25addd4ce8ae6b57136e5 chore: bump version to 0.2.0rc11; typing audit clean + all … Sonnet 4.6 minor 53 days ago
sha256:ef10830ce231e0a20efcb0e2586cb879471247e916616e6fdd0d51df459e2595 fix: typing audit — 0 violations, 0 untyped defs across all… Sonnet 4.6 minor 55 days ago