gabriel / musehub public
pyproject.toml
93 lines 2.2 KB
6b53f1af feat: supercharge all pages, full SOC refactor, and Python 3.14 upgrade (#7) Gabriel Cardona <cgcardona@gmail.com> 5d 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 requires-python = ">=3.14"
7 dependencies = [
8 "fastapi>=0.135.1",
9 "jinja2>=3.1.6",
10 "aiofiles>=25.1.0",
11 "uvicorn[standard]>=0.42.0",
12 "httpx>=0.28.1",
13 "pydantic>=2.12.5",
14 "pydantic-settings>=2.13.1",
15 "websockets>=15.0.1",
16 "PyJWT>=2.10.1",
17 "sqlalchemy[asyncio]>=2.0.48",
18 "asyncpg>=0.31.0",
19 "aiosqlite>=0.21.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 "typer>=0.15.4",
28 ]
29
30
31 [project.optional-dependencies]
32 dev = [
33 "pytest>=8.3.5",
34 "pytest-asyncio>=0.25.3",
35 "pytest-cov>=6.1.0",
36 "pytest-xdist>=3.6.1",
37 "coverage>=7.8.0",
38 "anyio>=4.9.0",
39 "mypy>=1.15.0",
40 "factory-boy>=3.3.3",
41 ]
42
43 [build-system]
44 requires = ["hatchling"]
45 build-backend = "hatchling.build"
46
47 [tool.pytest.ini_options]
48 asyncio_mode = "auto"
49 asyncio_default_fixture_loop_scope = "function"
50 testpaths = ["tests"]
51 cache_dir = "/tmp/pytest_cache"
52 addopts = "-v --tb=short -p no:randomly"
53 filterwarnings = [
54 "ignore:The 'is_flag' and 'flag_value' parameters are not supported by Typer:DeprecationWarning",
55 # aiosqlite uses Python's deprecated default datetime adapter internally;
56 # this is a third-party library issue, not ours (production uses asyncpg).
57 "ignore:The default datetime adapter is deprecated:DeprecationWarning:aiosqlite",
58 ]
59
60 [tool.coverage.run]
61 source = ["musehub"]
62 branch = true
63 omit = ["musehub/__init__.py", "*/tests/*"]
64
65 [tool.coverage.report]
66 fail_under = 60
67 show_missing = true
68 exclude_lines = [
69 "pragma: no cover",
70 "def __repr__",
71 "raise NotImplementedError",
72 "if TYPE_CHECKING:",
73 "if typing.TYPE_CHECKING:",
74 ]
75
76 [tool.mypy]
77 python_version = "3.14"
78 strict = true
79 explicit_package_bases = true
80 namespace_packages = true
81 warn_unreachable = true
82 show_error_codes = true
83
84 [[tool.mypy.overrides]]
85 module = ["tests.*"]
86 disallow_untyped_decorators = false
87
88 [[tool.mypy.overrides]]
89 module = ["boto3", "botocore.*", "mido", "yaml"]
90 ignore_missing_imports = true
91
92 [tool.hatch.build.targets.wheel]
93 packages = ["musehub"]