Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
123 lines (107 loc) · 3.54 KB
/
Copy pathpyproject.toml
File metadata and controls
123 lines (107 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"
[project]
name = "swingmusic"
description = "Swing Music"
readme = "README.md"
requires-python = ">=3.11"
dynamic = ["version"]
dependencies = [
"pillow>=11.1.0",
"Flask>=3.1.0",
"Flask-Cors>=3.0.10",
"requests>=2.27.1",
"colorgram.py>=1.2.0",
"tqdm>=4.65.0",
"Unidecode>=1.3.6",
"psutil>=5.9.4",
"show-in-file-manager>=1.1.4",
"flask-compress>=1.13",
"tabulate>=0.9.0",
"setproctitle>=1.3.2",
"locust>=2.20.1",
"watchdog>=4.0.0",
"flask-jwt-extended>=4.6.0",
"sqlalchemy>=2.0.31",
"memory-profiler>=0.61.0",
"sortedcontainers>=2.4.0",
"xxhash>=3.4.1",
"ffmpeg-python>=0.2.0",
"schedule>=1.2.2",
"pillow>=11.1.0",
"flask-openapi3==3.0.2",
"rapidfuzz==3.14.5",
"pendulum>=3.0.0",
"pystray>=0.19.5",
"cryptography>=46.0.1",
"waitress>=3.0.2; sys_platform == 'win32'",
"waitress>=3.0.2",
"granian>=2.5.5",
"asgiref>=3.10.0",
"natsort>=8.4.0",
"blurhash-python>=1.2.2",
"nuitka>=4.0.8",
"tinytag>=2.2.1",
"mutagen>=1.48.1",
]
[project.optional-dependencies]
build = [
"pyinstaller",
"nuitka>=4.0.8",
]
[tool.uv]
dependency-metadata = [
{ name = "waitress", version = "3.0.2", requires-dist = [], requires-python = ">=3.11" },
{ name = "bjoern", version="3.2.2", requires-dist = [], requires-python = ">=3.11"}
]
[project.scripts]
swingmusic = "swingmusic.__main__:run"
[project.urls]
Homepage = "https://swingmx.com/"
Repository = "https://github.com/swingmx/swingmusic"
Documentation = "https://swingmx.com/guide/introduction.html"
Issues = "https://github.com/swingmx/swingmusic/issues"
# Include compiled Nuitka extension modules (.so on Linux/macOS, .pyd on
# Windows) in the wheel. These replace the .py source files after the
# compile-premium-modules.sh step runs in CI.
[tool.setuptools.packages.find]
where = ["src"]
namespaces = true
exclude = ["*.tests", "*.tests.*"]
# setuptools-scm's file finder still tracks files under excluded packages;
# keep test trees out of wheels/sdists explicitly.
[tool.setuptools.exclude-package-data]
"*" = ["*/tests/*", "tests/*"]
[tool.setuptools.package-data]
"swingmusic.premium" = ["*.so", "*.pyd"]
"swingmusic.premium.recipes" = ["*.so", "*.pyd"]
"swingmusic.premium.classical" = ["*.so", "*.pyd"]
[tool.setuptools_scm]
version_scheme = "only-version"
local_scheme = "no-local-version"
fallback_version = "v0.0.0"
[dependency-groups]
dev = [
"pytest>=8.4.1",
]
# cibuildwheel produces per-platform wheels containing the Nuitka-compiled
# premium modules. Each wheel is platform-tagged (manylinux for Linux,
# macosx for macOS) so `pip install swingmusic` picks the right one and
# premium logic ships as compiled .so rather than plain Python source.
[tool.cibuildwheel]
build = ["cp311-*", "cp312-*", "cp313-*", "cp314-*"]
skip = "*-musllinux_*"
archs = ["auto64"]
before-build = "pip install nuitka>=4.0.8 && bash scripts/compile-premium-modules.sh"
# Verify each built wheel actually ships working premium modules. Runs in
# a fresh venv with only the wheel installed, so it catches missing-source
# bugs (the cause of v2.1.5 silently shipping a broken wheel) at build
# time instead of at install time.
test-command = "python {project}/scripts/test-premium-imports.py"
[tool.cibuildwheel.linux]
manylinux-x86_64-image = "manylinux_2_28"
manylinux-aarch64-image = "manylinux_2_28"
[tool.cibuildwheel.macos]
# macOS arm64 runners only (Apple Silicon). Intel macOS support is dropped.
archs = ["arm64"]